mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge in fix for bug#42589
This commit is contained in:
@ -23,7 +23,6 @@ EXTRA_PROGRAMS = comp_sql
|
||||
bin_SCRIPTS = @server_scripts@ \
|
||||
msql2mysql \
|
||||
mysql_config \
|
||||
mysql_fix_privilege_tables \
|
||||
mysql_fix_extensions \
|
||||
mysql_setpermission \
|
||||
mysql_secure_installation \
|
||||
@ -45,7 +44,6 @@ EXTRA_SCRIPTS = make_binary_distribution.sh \
|
||||
msql2mysql.sh \
|
||||
mysql_config.sh \
|
||||
mysql_config.pl.in \
|
||||
mysql_fix_privilege_tables.sh \
|
||||
mysql_fix_extensions.sh \
|
||||
mysql_install_db.sh \
|
||||
mysql_install_db.pl.in \
|
||||
@ -82,7 +80,6 @@ CLEANFILES = @server_scripts@ \
|
||||
make_sharedlib_distribution \
|
||||
msql2mysql \
|
||||
mysql_config \
|
||||
mysql_fix_privilege_tables \
|
||||
mysql_fix_extensions \
|
||||
mysql_setpermission \
|
||||
mysql_secure_installation \
|
||||
|
@ -1,223 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2000-2006 MySQL AB
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# 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=""
|
||||
# no elaborate fallback here; with no argument, it will happen in "mysql"
|
||||
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
|
||||
|
||||
dirname=`dirname "$0"`
|
||||
|
||||
if test -z "$bindir"
|
||||
then
|
||||
for i in @bindir@ $basedir/bin "$dirname/../client"
|
||||
do
|
||||
if test -f $i/mysql
|
||||
then
|
||||
bindir=$i
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if test -z "$bindir"
|
||||
then
|
||||
echo "Could not find MySQL command-line client (mysql)."
|
||||
echo "Please use --basedir to specify the directory where MySQL is installed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cmd="$bindir/mysql --no-defaults --default-character-set=latin1 --force --user=$user --host=$host"
|
||||
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 . "$dirname"
|
||||
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 "the current version of MySQL"
|
||||
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
|
||||
|
||||
run_cmd() {
|
||||
# Password argument is added here to allow for spaces in password.
|
||||
|
||||
if test ! -z "$password"
|
||||
then
|
||||
cat $sql_file | $cmd --password="$password"
|
||||
else
|
||||
cat $sql_file | $cmd
|
||||
fi
|
||||
}
|
||||
|
||||
if test $verbose = 0
|
||||
then
|
||||
run_cmd > /dev/null 2>&1
|
||||
else
|
||||
run_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
|
@ -5,10 +5,6 @@
|
||||
# because these just mean that your tables are already up to date.
|
||||
# This script is safe to run even if your tables are already up to date!
|
||||
|
||||
# On unix, you should use the mysql_fix_privilege_tables script to execute
|
||||
# this sql script.
|
||||
# On windows you should do 'mysql --force mysql < mysql_fix_privilege_tables.sql'
|
||||
|
||||
set sql_mode='';
|
||||
set storage_engine=MyISAM;
|
||||
|
||||
|
Reference in New Issue
Block a user