mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
bb2d3eaa30
BitKeeper/etc/ignore: auto-union BitKeeper/etc/logging_ok: auto-union Build-tools/Do-compile: Auto merged VC++Files/sql/mysqld.dsp: Auto merged client/Makefile.am: Auto merged client/mysql.cc: Auto merged BitKeeper/deleted/.del-acinclude.m4~f4ab416bac5003: Auto merged client/mysqltest.c: Auto merged include/my_base.h: Auto merged innobase/dict/dict0dict.c: Auto merged innobase/dict/dict0load.c: Auto merged innobase/include/dict0dict.h: Auto merged innobase/include/row0mysql.h: Auto merged innobase/os/os0file.c: Auto merged innobase/srv/srv0srv.c: Auto merged libmysql/libmysql.c: Auto merged myisam/mi_check.c: Auto merged myisam/mi_rnext_same.c: Auto merged myisam/mi_write.c: Auto merged myisam/sort.c: Auto merged mysql-test/mysql-test-run.sh: Auto merged mysql-test/r/ctype_ucs.result: Auto merged mysql-test/r/ctype_ujis.result: Auto merged mysql-test/r/gis-rtree.result: Auto merged mysql-test/r/group_by.result: Auto merged mysql-test/r/merge.result: Auto merged mysql-test/r/metadata.result: Auto merged mysql-test/r/ndb_alter_table.result: Auto merged mysql-test/r/ps_1general.result: Auto merged mysql-test/r/insert_update.result: Auto merged mysql-test/r/timezone2.result: Auto merged mysql-test/r/type_enum.result: Auto merged mysql-test/r/variables.result: Auto merged mysql-test/t/ctype_ucs.test: Auto merged mysql-test/t/merge.test: Auto merged mysql-test/t/ps_1general.test: Auto merged mysql-test/t/subselect.test: Auto merged mysql-test/t/system_mysql_db_fix.test: Auto merged mysql-test/t/variables.test: Auto merged ndb/include/ndbapi/NdbConnection.hpp: Auto merged ndb/include/ndbapi/NdbDictionary.hpp: Auto merged ndb/src/common/util/version.c: Auto merged ndb/src/kernel/blocks/dbacc/DbaccInit.cpp: Auto merged ndb/src/kernel/blocks/dbacc/Makefile.am: Auto merged ndb/src/kernel/blocks/dbdict/Dbdict.cpp: Auto merged ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: Auto merged ndb/src/kernel/blocks/dblqh/DblqhInit.cpp: Auto merged ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: Auto merged ndb/src/kernel/blocks/dbtux/Dbtux.hpp: Auto merged ndb/src/ndbapi/NdbBlob.cpp: Auto merged ndb/src/ndbapi/NdbConnection.cpp: Auto merged ndb/src/ndbapi/NdbDictionary.cpp: Auto merged ndb/src/ndbapi/NdbDictionaryImpl.cpp: Auto merged ndb/src/ndbapi/NdbDictionaryImpl.hpp: Auto merged ndb/src/ndbapi/NdbOperationExec.cpp: Auto merged ndb/src/ndbapi/NdbScanOperation.cpp: Auto merged ndb/test/ndbapi/Makefile.am: Auto merged scripts/make_win_src_distribution.sh: Auto merged scripts/mysql_install_db.sh: Auto merged sql/field.cc: Auto merged sql/ha_innodb.cc: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/ha_ndbcluster.h: Auto merged sql/handler.cc: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_create.h: Auto merged sql/item_func.cc: Auto merged sql/item_geofunc.cc: Auto merged sql/item_row.cc: Auto merged sql/item_strfunc.cc: Auto merged sql/item_strfunc.h: Auto merged sql/item_sum.cc: Auto merged sql/item_sum.h: Auto merged sql/log.cc: Auto merged sql/log_event.cc: Auto merged sql/mysqld.cc: Auto merged sql/net_serv.cc: Auto merged sql/password.c: Auto merged sql/protocol.cc: Auto merged sql/repl_failsafe.cc: Auto merged sql/set_var.cc: Auto merged sql/slave.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_cache.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_derived.cc: Auto merged sql/sql_do.cc: Auto merged sql/sql_handler.cc: Auto merged sql/sql_help.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_repl.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_union.cc: Auto merged sql/examples/ha_archive.cc: Auto merged sql/strfunc.cc: Auto merged sql/table.cc: Auto merged sql/table.h: Auto merged sql/tztime.h: Auto merged sql/udf_example.cc: Auto merged sql/unireg.cc: Auto merged Makefile.am: Simple merge client/mysqldump.c: Simple merge configure.in: Simple merge libmysqld/lib_sql.cc: Automatic merge mysql-test/r/func_str.result: Automatic merge mysql-test/r/grant.result: simple merge mysql-test/r/multi_update.result: automatc merge mysql-test/r/ps.result: automatic merge mysql-test/r/ps_2myisam.result: Automatic merge mysql-test/r/ps_3innodb.result: Automatic merge mysql-test/r/ps_4heap.result: Automatic merge mysql-test/r/ps_5merge.result: Automatic merge mysql-test/r/ps_6bdb.result: Automatic merge mysql-test/r/ps_7ndb.result: Automatic merge mysql-test/r/show_check.result: Automatic merge mysql-test/r/subselect.result: Automatic merge mysql-test/t/grant.test: Automatic merge mysql-test/t/multi_update.test: Automatic merge mysql-test/t/ps.test: Automatic merge mysql-test/t/show_check.test: Automatic merge ndb/docs/wl2077.txt: merge ndb/src/mgmsrv/main.cpp: merge scripts/mysql_fix_privilege_tables.sh: merge sql/item.cc: Merge (difficult) sql/item.h: simple merge sql/item_cmpfunc.h: Automatic merge sql/item_subselect.cc: Simple merge sql/item_subselect.h: Automatic merge sql/mysql_priv.h: Simple merge sql/slave.h: Automatic merge sql/sql_base.cc: Removed code that was backported to 4.1 sql/sql_class.h: Merge (some code moved to sql_insert.cc) sql/sql_db.cc: simple merge sql/sql_insert.cc: Merge (difficult as logic had changed both in 4.1 and 5.0) Some coded moved here from sql_class.h sql/sql_parse.cc: Merge (difficult) sql/sql_prepare.cc: Simple merge sql/sql_select.cc: Automatic merge sql/sql_table.cc: Simple merge sql/sql_update.cc: Difficult merge because of different logic for multi-updates sql/sql_yacc.yy: Simple merge tests/client_test.c: Simple merge
194 lines
4.8 KiB
Bash
194 lines
4.8 KiB
Bash
#!/bin/sh
|
|
# This script is a wrapper to pipe the mysql_fix_privilege_tables.sql
|
|
# through the mysql client program to the mysqld server
|
|
|
|
# Default values (Can be changed in my.cnf)
|
|
password=""
|
|
host="localhost"
|
|
user="root"
|
|
sql_only=0
|
|
basedir="@prefix@"
|
|
verbose=0
|
|
args=""
|
|
port=""
|
|
socket=""
|
|
database="mysql"
|
|
bindir="."
|
|
pkgdatadir="@pkgdatadir@"
|
|
print_defaults_bindir="."
|
|
|
|
file=mysql_fix_privilege_tables.sql
|
|
|
|
# The following test is to make this script compatible with the 4.0 where
|
|
# the single argument could be a password
|
|
if test "$#" = 1
|
|
then
|
|
case "$1" in
|
|
--*) ;;
|
|
*) old_style_password="$1" ; shift ;;
|
|
esac
|
|
fi
|
|
|
|
# The following code is almost identical to the code in mysql_install_db.sh
|
|
|
|
case "$1" in
|
|
--no-defaults|--defaults-file=*|--defaults-extra-file=*)
|
|
defaults="$1"; shift
|
|
;;
|
|
esac
|
|
|
|
parse_arguments() {
|
|
# We only need to pass arguments through to the server if we don't
|
|
# handle them here. So, we collect unrecognized options (passed on
|
|
# the command line) into the args variable.
|
|
pick_args=
|
|
if test "$1" = PICK-ARGS-FROM-ARGV
|
|
then
|
|
pick_args=1
|
|
shift
|
|
fi
|
|
|
|
for arg do
|
|
case "$arg" in
|
|
--basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
|
|
--user=*) user=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
|
|
--password=*) password=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
|
|
--host=*) host=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
|
|
--sql|--sql-only) sql_only=1 ;;
|
|
--verbose) verbose=1 ;;
|
|
--port=*) port=`echo "$arg" | sed -e "s;--port=;;"` ;;
|
|
--socket=*) socket=`echo "$arg" | sed -e "s;--socket=;;"` ;;
|
|
--database=*) database=`echo "$arg" | sed -e "s;--database=;;"` ;;
|
|
--bindir=*) bindir=`echo "$arg" | sed -e "s;--bindir=;;"`
|
|
print_defaults_bindir=$bindir
|
|
;;
|
|
*)
|
|
if test -n "$pick_args"
|
|
then
|
|
# This sed command makes sure that any special chars are quoted,
|
|
# so the arg gets passed exactly to the server.
|
|
args="$args "`echo "$arg" | sed -e 's,\([^=a-zA-Z0-9_.-]\),\\\\\1,g'`
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
# Get first arguments from the my.cfg file, groups [mysqld] and
|
|
# [mysql_install_db], and then merge with the command line arguments
|
|
|
|
print_defaults=my_print_defaults
|
|
for dir in ./bin @bindir@ @bindir@ extra $print_defaults_bindir/../bin $print_defaults_bindir/../extra
|
|
do
|
|
if test -x $dir/my_print_defaults
|
|
then
|
|
print_defaults="$dir/my_print_defaults"
|
|
break
|
|
fi
|
|
done
|
|
|
|
parse_arguments `$print_defaults $defaults mysql_install_db mysql_fix_privilege_tables`
|
|
parse_arguments PICK-ARGS-FROM-ARGV "$@"
|
|
|
|
if test -z "$password"
|
|
then
|
|
password=$old_style_password
|
|
fi
|
|
|
|
# Find where 'mysql' command is located
|
|
|
|
if test -z "$bindir"
|
|
then
|
|
for i in @bindir@ $basedir/bin client
|
|
do
|
|
if test -f $i/mysql
|
|
then
|
|
bindir=$i
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
|
|
cmd="$bindir/mysql --no-defaults --force --user=$user --host=$host"
|
|
if test ! -z "$password" ; then
|
|
cmd="$cmd --password=$password"
|
|
fi
|
|
if test ! -z "$port"; then
|
|
cmd="$cmd --port=$port"
|
|
fi
|
|
if test ! -z "$socket"; then
|
|
cmd="$cmd --socket=$socket"
|
|
fi
|
|
cmd="$cmd --database=$database"
|
|
|
|
if test $sql_only = 1
|
|
then
|
|
cmd="cat"
|
|
fi
|
|
|
|
# Find where first mysql_fix_privilege_tables.sql is located
|
|
for i in $basedir/support-files $basedir/share $basedir/share/mysql \
|
|
$basedir/scripts $pkgdatadir . ./scripts
|
|
do
|
|
if test -f $i/$file
|
|
then
|
|
pkgdatadir=$i
|
|
break
|
|
fi
|
|
done
|
|
|
|
sql_file="$pkgdatadir/$file"
|
|
if test ! -f $sql_file
|
|
then
|
|
echo "Could not find file '$file'."
|
|
echo "Please use --basedir to specify the directory where MySQL is installed"
|
|
exit 1
|
|
fi
|
|
|
|
s_echo()
|
|
{
|
|
if test $sql_only = 0
|
|
then
|
|
echo $1
|
|
fi
|
|
}
|
|
|
|
s_echo "This script updates all the mysql privilege tables to be usable by"
|
|
s_echo "MySQL 4.0 and above."
|
|
s_echo ""
|
|
s_echo "This is needed if you want to use the new GRANT functions,"
|
|
s_echo "CREATE AGGREGATE FUNCTION, stored procedures, or"
|
|
s_echo "more secure passwords in 4.1"
|
|
s_echo ""
|
|
|
|
if test $verbose = 1
|
|
then
|
|
s_echo "You can safely ignore all 'Duplicate column' and 'Unknown column' errors"
|
|
s_echo "because these just mean that your tables are already up to date."
|
|
s_echo "This script is safe to run even if your tables are already up to date!"
|
|
s_echo ""
|
|
fi
|
|
|
|
if test $verbose = 0
|
|
then
|
|
cat $sql_file | $cmd > /dev/null 2>&1
|
|
else
|
|
cat $sql_file | $cmd > /dev/null
|
|
fi
|
|
if test $? = 0
|
|
then
|
|
s_echo "done"
|
|
else
|
|
s_echo "Got a failure from command:"
|
|
s_echo "cat $sql_file | $cmd"
|
|
s_echo "Please check the above output and try again."
|
|
if test $verbose = 0
|
|
then
|
|
s_echo ""
|
|
s_echo "Running the script with the --verbose option may give you some information"
|
|
s_echo "of what went wrong."
|
|
fi
|
|
s_echo ""
|
|
s_echo "If you get an 'Access denied' error, you should run this script again and"
|
|
s_echo "give the MySQL root user password as an argument with the --password= option"
|
|
fi
|