Commit 62683b70 authored by unknown's avatar unknown
Browse files

Improved fix for bug#18516 (also 19353):

1) Rename the old shell tool "mysql_upgrade", to avoid a name collision.
2) Improve the spec file, to explicitly use a temporary socket.


scripts/mysql_upgrade_shell.sh:
  Rename: scripts/mysql_upgrade.sh -> scripts/mysql_upgrade_shell.sh
scripts/Makefile.am:
  The old shell script "mysql_upgrade" must be renamed, 
  so that its name does not collide with the new binary.
support-files/mysql.spec.sh:
  The previous version was incomplete, as it did not cover the case
  where the DBA had configured a non-default socket file.
  Solve that by creating and explicitly providing a temporary directory
  for the socket just for the duration of "mysql_upgrade", which also
  can be better protected than the default socket.
parent 99740b3f
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ bin_SCRIPTS = @server_scripts@ \
			mysqldumpslow \
			mysql_explain_log \
			mysql_tableinfo \
			mysql_upgrade \
			mysql_upgrade_shell \
			mysqld_multi \
			mysql_create_system_tables

@@ -60,7 +60,7 @@ EXTRA_SCRIPTS = make_binary_distribution.sh \
			mysql_explain_log.sh \
			mysqld_multi.sh \
			mysql_tableinfo.sh \
			mysql_upgrade.sh \
			mysql_upgrade_shell.sh \
			mysqld_safe.sh \
			mysql_create_system_tables.sh

@@ -89,7 +89,7 @@ CLEANFILES = @server_scripts@ \
			mysqldumpslow \
			mysql_explain_log \
			mysql_tableinfo \
			mysql_upgrade \
			mysql_upgrade_shell \
			mysqld_multi \
			make_win_src_distribution \
			mysql_create_system_tables
+0 −0

File moved.

+18 −4
Original line number Diff line number Diff line
@@ -490,11 +490,19 @@ chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir
# 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
if type mktemp >/dev/null 2>&1
then
  mysql_tmp_sockdir=`mktemp -dt`
else
  PID=$$
  mysql_tmp_sockdir=/tmp/mysql-$PID
  ( umask 077 ; mkdir $mysql_tmp_sockdir )
fi
chown %{mysqld_user}:%{mysqld_group} $mysql_tmp_sockdir
%{_sysconfdir}/init.d/mysql start --skip-networking --skip-grant-tables --socket=$mysql_tmp_sockdir/upgrade.sock
%{_bindir}/mysql_upgrade --socket=$mysql_tmp_sockdir/upgrade.sock
%{_sysconfdir}/init.d/mysql stop  --skip-networking --skip-grant-tables
chmod 755 $mysql_datadir
rm -fr $mysql_tmp_sockdir

# Change permissions again to fix any new files.
chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir
@@ -732,6 +740,12 @@ fi
# itself - note that they must be ordered by date (important when
# merging BK trees)
%changelog 
* Thu Jun 22 2006 Joerg Bruehe <joerg@mysql.com>

- Close a gap of the previous version by explicitly using
  a newly created temporary directory for the socket to be used
  in the "mysql_upgrade" operation, overriding any local setting.

* Tue Jun 20 2006 Joerg Bruehe <joerg@mysql.com>

- To run "mysql_upgrade", we need a running server;