Commit 8c3312fe authored by petr@mysql.com's avatar petr@mysql.com

mysql.server script fixed to use mysqld_safe by default + lots of minor additions

parent 2ed9965b
...@@ -233,7 +233,7 @@ if [ $BASE_SYSTEM != "netware" ] ; then ...@@ -233,7 +233,7 @@ if [ $BASE_SYSTEM != "netware" ] ; then
chmod a+x $BASE/bin/* chmod a+x $BASE/bin/*
$CP scripts/* $BASE/bin $CP scripts/* $BASE/bin
$BASE/bin/replace \@localstatedir\@ ./data \@bindir\@ ./bin \@scriptdir\@ ./bin \@libexecdir\@ ./bin \@sbindir\@ ./bin \@prefix\@ . \@HOSTNAME\@ @HOSTNAME@ \@pkgdatadir\@ ./support-files < $SOURCE/scripts/mysql_install_db.sh > $BASE/scripts/mysql_install_db $BASE/bin/replace \@localstatedir\@ ./data \@bindir\@ ./bin \@scriptdir\@ ./bin \@libexecdir\@ ./bin \@sbindir\@ ./bin \@prefix\@ . \@HOSTNAME\@ @HOSTNAME@ \@pkgdatadir\@ ./support-files < $SOURCE/scripts/mysql_install_db.sh > $BASE/scripts/mysql_install_db
$BASE/bin/replace \@prefix\@ /usr/local/mysql \@bindir\@ ./bin \@sbindir\@ ./bin \@MYSQLD_USER\@ mysql \@localstatedir\@ /usr/local/mysql/data \@HOSTNAME\@ @HOSTNAME@ < $SOURCE/support-files/mysql.server.sh > $BASE/support-files/mysql.server $BASE/bin/replace \@prefix\@ /usr/local/mysql \@bindir\@ ./bin \@sbindir\@ ./bin \@libexecdir\@ ./bin \@MYSQLD_USER\@ @MYSQLD_USER@ \@localstatedir\@ /usr/local/mysql/data \@HOSTNAME\@ @HOSTNAME@ < $SOURCE/support-files/mysql.server.sh > $BASE/support-files/mysql.server
$BASE/bin/replace /my/gnu/bin/hostname /bin/hostname -- $BASE/bin/mysqld_safe $BASE/bin/replace /my/gnu/bin/hostname /bin/hostname -- $BASE/bin/mysqld_safe
mv $BASE/support-files/binary-configure $BASE/configure mv $BASE/support-files/binary-configure $BASE/configure
chmod a+x $BASE/bin/* $BASE/scripts/* $BASE/support-files/mysql-* $BASE/support-files/mysql.server $BASE/configure chmod a+x $BASE/bin/* $BASE/scripts/* $BASE/support-files/mysql-* $BASE/support-files/mysql.server $BASE/configure
......
...@@ -48,15 +48,21 @@ datadir= ...@@ -48,15 +48,21 @@ datadir=
# Set some defaults # Set some defaults
pid_file= pid_file=
server_pid_file=
use_mysqld_safe=1
user=@MYSQLD_USER@
if test -z "$basedir" if test -z "$basedir"
then then
basedir=@prefix@ basedir=@prefix@
bindir=@bindir@ bindir=@bindir@
datadir=@localstatedir@ datadir=@localstatedir@
sbindir=@sbindir@ sbindir=@sbindir@
libexecdir=@libexecdir@
else else
bindir="$basedir/bin" bindir="$basedir/bin"
sbindir="$basedir/sbin" datadir="$basedir/data"
sbindir="$basedir/bin"
libexecdir="$basedir/bin"
fi fi
# #
...@@ -66,8 +72,14 @@ lsb_functions="/lib/lsb/init-functions" ...@@ -66,8 +72,14 @@ lsb_functions="/lib/lsb/init-functions"
if test -f $lsb_functions ; then if test -f $lsb_functions ; then
source $lsb_functions source $lsb_functions
else else
alias log_success_msg="echo \ SUCCESS! " log_success_msg()
alias log_failure_msg="echo \ ERROR! " {
echo " SUCCESS! $@"
}
log_failure_msg()
{
echo " ERROR! $@"
}
fi fi
PATH=/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin PATH=/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin
...@@ -84,8 +96,17 @@ esac ...@@ -84,8 +96,17 @@ esac
parse_server_arguments() { parse_server_arguments() {
for arg do for arg do
case "$arg" in case "$arg" in
--basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;; --basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'`
bindir="$basedir/bin"
datadir="$basedir/data"
sbindir="$basedir/bin"
libexecdir="$basedir/bin"
;;
--datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;; --datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
--user=*) user=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
--pid-file=*) server_pid_file=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
--use-mysqld_safe) use_mysqld_safe=1;;
--use-manager) use_mysqld_safe=0;;
esac esac
done done
} }
...@@ -94,6 +115,7 @@ parse_manager_arguments() { ...@@ -94,6 +115,7 @@ parse_manager_arguments() {
for arg do for arg do
case "$arg" in case "$arg" in
--pid-file=*) pid_file=`echo "$arg" | sed -e 's/^[^=]*=//'` ;; --pid-file=*) pid_file=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
--user=*) user=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
esac esac
done done
} }
...@@ -165,17 +187,22 @@ else ...@@ -165,17 +187,22 @@ else
fi fi
# #
# Test if someone changed datadir; In this case we should also read the # Read defaults file from 'basedir'. If there is no defaults file there
# default arguments from this directory # check if it's in the old (depricated) place (datadir) and read it from there
# #
extra_args="" extra_args=""
if test "$datadir" != "@localstatedir@" if test -r "$basedir/my.cnf"
then then
extra_args="-e $datadir/my.cnf" extra_args="-e $basedir/my.cnf"
else
if test -r "$datadir/my.cnf"
then
extra_args="-e $datadir/my.cnf"
fi
fi fi
parse_server_arguments `$print_defaults $extra_args mysqld` parse_server_arguments `$print_defaults $extra_args mysqld server mysql_server mysql.server`
# Look for the pidfile # Look for the pidfile
parse_manager_arguments `$print_defaults $extra_args manager` parse_manager_arguments `$print_defaults $extra_args manager`
...@@ -192,9 +219,15 @@ else ...@@ -192,9 +219,15 @@ else
* ) pid_file="$datadir/$pid_file" ;; * ) pid_file="$datadir/$pid_file" ;;
esac esac
fi fi
if test -z "$server_pid_file"
user=@MYSQLD_USER@ then
USER_OPTION="--user=$user" server_pid_file=$datadir/`@HOSTNAME@`.pid
else
case "$server_pid_file" in
/* ) ;;
* ) server_pid_file="$datadir/$server_pid_file" ;;
esac
fi
# Safeguard (relative paths, core dumps..) # Safeguard (relative paths, core dumps..)
cd $basedir cd $basedir
...@@ -203,12 +236,21 @@ case "$mode" in ...@@ -203,12 +236,21 @@ case "$mode" in
'start') 'start')
# Start daemon # Start daemon
if test -x $sbindir/mysqlmanager manager=$bindir/mysqlmanager
if test -x $libexecdir/mysqlmanager
then
manager=$libexecdir/mysqlmanager
elif test -x $bindir/mysqlmanager
then
manager=$sbindir/mysqlmanager
fi
echo $echo_n "Starting MySQL"
if test -x $manager -a "$use_mysqld_safe" = "0"
then then
# 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.
echo $echo_n "Starting MySQL" $manager --user=$user --pid-file=$pid_file >/dev/null 2>&1 &
$sbindir/mysqlmanager $USER_OPTION --pid-file=$pid_file >/dev/null 2>&1 &
wait_for_pid created wait_for_pid created
# Make lock for RedHat / SuSE # Make lock for RedHat / SuSE
...@@ -216,14 +258,38 @@ case "$mode" in ...@@ -216,14 +258,38 @@ case "$mode" in
then then
touch /var/lock/subsys/mysqlmanager touch /var/lock/subsys/mysqlmanager
fi fi
elif test -x $bindir/mysqld_safe
then
# 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 &
wait_for_pid created
# Make lock for RedHat / SuSE
if test -w /var/lock/subsys
then
touch /var/lock/subsys/mysql
fi
else else
log_failure_msg "Can't execute $sbindir/mysqlmanager" log_failure_msg "Couldn't find MySQL manager or server"
fi fi
;; ;;
'stop') 'stop')
# Stop daemon. We use a signal here to avoid having to know the # Stop daemon. We use a signal here to avoid having to know the
# root password. # root password.
# The RedHat / SuSE lock directory to remove
lock_dir=/var/lock/subsys/mysqlmanager
# If the manager pid_file doesn't exist, try the server's
if test ! -s "$pid_file"
then
pid_file=$server_pid_file
lock_dir=/var/lock/subsys/mysql
fi
if test -s "$pid_file" if test -s "$pid_file"
then then
mysqlmanager_pid=`cat $pid_file` mysqlmanager_pid=`cat $pid_file`
...@@ -233,12 +299,12 @@ case "$mode" in ...@@ -233,12 +299,12 @@ case "$mode" in
wait_for_pid removed wait_for_pid removed
# delete lock for RedHat / SuSE # delete lock for RedHat / SuSE
if test -f /var/lock/subsys/mysqlmanager if test -f $lock_dir
then then
rm -f /var/lock/subsys/mysqlmanager rm -f $lock_dir
fi fi
else else
log_failure_msg "mysqlmanager PID file could not be found!" log_failure_msg "MySQL manager or server PID file could not be found!"
fi fi
;; ;;
...@@ -249,9 +315,19 @@ case "$mode" in ...@@ -249,9 +315,19 @@ case "$mode" in
$0 start $0 start
;; ;;
'reload')
if test -s "$server_pid_file" ; then
mysqld_pid=`cat $server_pid_file`
kill -HUP $mysqld_pid && log_success_msg "Reloading service MySQL"
touch $server_pid_file
else
log_failure_msg "MySQL PID file could not be found!"
fi
;;
*) *)
# usage # usage
echo "Usage: $0 start|stop|restart" echo "Usage: $0 start|stop|restart|reload"
exit 1 exit 1
;; ;;
esac esac
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