diff options
author | joerg@mysql.com <> | 2006-06-20 22:40:46 +0200 |
---|---|---|
committer | joerg@mysql.com <> | 2006-06-20 22:40:46 +0200 |
commit | 27df8b07b7c189bfa1ff1238780ebe867ecc40d6 (patch) | |
tree | b93f288d4f437afe5b3db9feb3a10a1fdee8bcbc /support-files | |
parent | 337396d19aba98daa0d2b496f7e280971adac5c8 (diff) | |
download | mariadb-git-27df8b07b7c189bfa1ff1238780ebe867ecc40d6.tar.gz |
Fix for bug#18516 (also #19353, reported for 5.1):
In addition to include "mysql_upgrade" in a RPM, it should also be called
when the RPM is upgraded.
Diffstat (limited to 'support-files')
-rw-r--r-- | support-files/mysql.server.sh | 18 | ||||
-rw-r--r-- | support-files/mysql.spec.sh | 16 |
2 files changed, 29 insertions, 5 deletions
diff --git a/support-files/mysql.server.sh b/support-files/mysql.server.sh index 27a1b85a354..d5041f30c0a 100644 --- a/support-files/mysql.server.sh +++ b/support-files/mysql.server.sh @@ -98,6 +98,11 @@ PATH=/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin export PATH mode=$1 # start or stop +shift +other_args="$*" # uncommon, but needed when called from an RPM upgrade action + # Expected: "--skip-networking --skip-grant-tables" + # They are not checked here, intentionally, as it is the resposibility + # of the "spec" file author to give correct arguments only. case `echo "testing\c"`,`echo -n testing` in *c*,-n*) echo_n= echo_c= ;; @@ -264,6 +269,11 @@ case "$mode" in echo $echo_n "Starting MySQL" if test -x $manager -a "$use_mysqld_safe" = "0" then + if test -n "$other_args" + then + log_failure_msg "MySQL manager does not support options '$other_args'" + exit 1 + fi # Give extra arguments to mysqld with the my.cnf file. This script may # be overwritten at next upgrade. $manager --user=$user --pid-file=$pid_file >/dev/null 2>&1 & @@ -279,7 +289,7 @@ case "$mode" in # Give extra arguments to mysqld with the my.cnf file. This script # may be overwritten at next upgrade. pid_file=$server_pid_file - $bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file >/dev/null 2>&1 & + $bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 & wait_for_pid created # Make lock for RedHat / SuSE @@ -327,8 +337,8 @@ case "$mode" in 'restart') # Stop the service and regardless of whether it was # running or not, start it again. - $0 stop - $0 start + $0 stop $other_args + $0 start $other_args ;; 'reload') @@ -343,7 +353,7 @@ case "$mode" in *) # usage - echo "Usage: $0 start|stop|restart|reload" + echo "Usage: $0 {start|stop|restart|reload} [ MySQL server options ]" exit 1 ;; esac diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 202910f44e4..abd29b6014a 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -485,7 +485,16 @@ chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir %{_bindir}/mysql_install_db --rpm --user=%{mysqld_user} # Upgrade databases if needed -%{_bindir}/mysql_upgrade --user=%{mysqld_user} +# This must be done as database user "root", who should be password-protected, +# but this password is not available here. +# So ensure the server is isolated as much as possible, and start it so that +# passwords are not checked. +# See the related change in the start script "/etc/init.d/mysql". +chmod 700 $mysql_datadir +%{_sysconfdir}/init.d/mysql start --skip-networking --skip-grant-tables +%{_bindir}/mysql_upgrade +%{_sysconfdir}/init.d/mysql stop --skip-networking --skip-grant-tables +chmod 755 $mysql_datadir # Change permissions again to fix any new files. chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir @@ -723,6 +732,11 @@ fi # itself - note that they must be ordered by date (important when # merging BK trees) %changelog +* Tue Jun 20 2006 Joerg Bruehe <joerg@mysql.com> + +- To run "mysql_upgrade", we need a running server; + start it in isolation and skip password checks. + * Sat May 20 2006 Kent Boortz <kent@mysql.com> - Always compile for PIC, position independent code. |