Commit 27df8b07 authored by joerg@mysql.com's avatar joerg@mysql.com

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.
parent 337396d1
...@@ -98,6 +98,11 @@ PATH=/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin ...@@ -98,6 +98,11 @@ PATH=/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin
export PATH export PATH
mode=$1 # start or stop 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 case `echo "testing\c"`,`echo -n testing` in
*c*,-n*) echo_n= echo_c= ;; *c*,-n*) echo_n= echo_c= ;;
...@@ -264,6 +269,11 @@ case "$mode" in ...@@ -264,6 +269,11 @@ case "$mode" in
echo $echo_n "Starting MySQL" echo $echo_n "Starting MySQL"
if test -x $manager -a "$use_mysqld_safe" = "0" if test -x $manager -a "$use_mysqld_safe" = "0"
then 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 # Give extra arguments to mysqld with the my.cnf file. This script may
# be overwritten at next upgrade. # be overwritten at next upgrade.
$manager --user=$user --pid-file=$pid_file >/dev/null 2>&1 & $manager --user=$user --pid-file=$pid_file >/dev/null 2>&1 &
...@@ -279,7 +289,7 @@ case "$mode" in ...@@ -279,7 +289,7 @@ case "$mode" in
# Give extra arguments to mysqld with the my.cnf file. This script # Give extra arguments to mysqld with the my.cnf file. This script
# may be overwritten at next upgrade. # may be overwritten at next upgrade.
pid_file=$server_pid_file 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 wait_for_pid created
# Make lock for RedHat / SuSE # Make lock for RedHat / SuSE
...@@ -327,8 +337,8 @@ case "$mode" in ...@@ -327,8 +337,8 @@ case "$mode" in
'restart') 'restart')
# Stop the service and regardless of whether it was # Stop the service and regardless of whether it was
# running or not, start it again. # running or not, start it again.
$0 stop $0 stop $other_args
$0 start $0 start $other_args
;; ;;
'reload') 'reload')
...@@ -343,7 +353,7 @@ case "$mode" in ...@@ -343,7 +353,7 @@ case "$mode" in
*) *)
# usage # usage
echo "Usage: $0 start|stop|restart|reload" echo "Usage: $0 {start|stop|restart|reload} [ MySQL server options ]"
exit 1 exit 1
;; ;;
esac esac
...@@ -485,7 +485,16 @@ chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir ...@@ -485,7 +485,16 @@ chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir
%{_bindir}/mysql_install_db --rpm --user=%{mysqld_user} %{_bindir}/mysql_install_db --rpm --user=%{mysqld_user}
# Upgrade databases if needed # 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. # Change permissions again to fix any new files.
chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir
...@@ -723,6 +732,11 @@ fi ...@@ -723,6 +732,11 @@ fi
# itself - note that they must be ordered by date (important when # itself - note that they must be ordered by date (important when
# merging BK trees) # merging BK trees)
%changelog %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> * Sat May 20 2006 Kent Boortz <kent@mysql.com>
- Always compile for PIC, position independent code. - Always compile for PIC, position independent code.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment