mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 02:51:44 +01:00
057cb35c45
from the MySQL 5.5 source tree. This change adds the spec file for these ULN RPMs as well as several patches and additional sources, to be used only in ULN RPMs. All these files are in a new directory "SPECIFIC-ULN/". This commit is for internal tool tests only, not yet ready for publishing.
209 lines
5.4 KiB
Bash
209 lines
5.4 KiB
Bash
#!/bin/sh
|
|
#
|
|
# mysqld This shell script takes care of starting and stopping
|
|
# the MySQL subsystem (mysqld).
|
|
#
|
|
# chkconfig: - 64 36
|
|
# description: MySQL database server.
|
|
# processname: mysqld
|
|
# config: /etc/my.cnf
|
|
# pidfile: /var/run/mysqld/mysqld.pid
|
|
|
|
# Source function library.
|
|
. /etc/rc.d/init.d/functions
|
|
|
|
# Source networking configuration.
|
|
. /etc/sysconfig/network
|
|
|
|
|
|
exec="/usr/bin/mysqld_safe"
|
|
prog="mysqld"
|
|
|
|
# Set timeouts here so they can be overridden from /etc/sysconfig/mysqld
|
|
STARTTIMEOUT=120
|
|
STOPTIMEOUT=60
|
|
|
|
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
|
|
|
|
lockfile=/var/lock/subsys/$prog
|
|
|
|
|
|
# extract value of a MySQL option from config files
|
|
# Usage: get_mysql_option SECTION VARNAME DEFAULT
|
|
# result is returned in $result
|
|
# We use my_print_defaults which prints all options from multiple files,
|
|
# with the more specific ones later; hence take the last match.
|
|
get_mysql_option(){
|
|
result=`/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1`
|
|
if [ -z "$result" ]; then
|
|
# not found, use default
|
|
result="$3"
|
|
fi
|
|
}
|
|
|
|
get_mysql_option mysqld datadir "/var/lib/mysql"
|
|
datadir="$result"
|
|
get_mysql_option mysqld socket "$datadir/mysql.sock"
|
|
socketfile="$result"
|
|
get_mysql_option mysqld_safe log-error "/var/log/mysqld.log"
|
|
errlogfile="$result"
|
|
get_mysql_option mysqld_safe pid-file "/var/run/mysqld/mysqld.pid"
|
|
mypidfile="$result"
|
|
|
|
|
|
start(){
|
|
[ -x $exec ] || exit 5
|
|
# check to see if it's already running
|
|
RESPONSE=`/usr/bin/mysqladmin --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1`
|
|
if [ $? = 0 ]; then
|
|
# already running, do nothing
|
|
action $"Starting $prog: " /bin/true
|
|
ret=0
|
|
elif echo "$RESPONSE" | grep -q "Access denied for user"
|
|
then
|
|
# already running, do nothing
|
|
action $"Starting $prog: " /bin/true
|
|
ret=0
|
|
else
|
|
# prepare for start
|
|
touch "$errlogfile"
|
|
chown mysql:mysql "$errlogfile"
|
|
chmod 0640 "$errlogfile"
|
|
[ -x /sbin/restorecon ] && /sbin/restorecon "$errlogfile"
|
|
if [ ! -d "$datadir/mysql" ] ; then
|
|
# First, make sure $datadir is there with correct permissions
|
|
if [ ! -e "$datadir" -a ! -h "$datadir" ]
|
|
then
|
|
mkdir -p "$datadir" || exit 1
|
|
fi
|
|
chown mysql:mysql "$datadir"
|
|
chmod 0755 "$datadir"
|
|
[ -x /sbin/restorecon ] && /sbin/restorecon "$datadir"
|
|
# Now create the database
|
|
action $"Initializing MySQL database: " /usr/bin/mysql_install_db --datadir="$datadir" --user=mysql
|
|
ret=$?
|
|
chown -R mysql:mysql "$datadir"
|
|
if [ $ret -ne 0 ] ; then
|
|
return $ret
|
|
fi
|
|
fi
|
|
chown mysql:mysql "$datadir"
|
|
chmod 0755 "$datadir"
|
|
# Pass all the options determined above, to ensure consistent behavior.
|
|
# In many cases mysqld_safe would arrive at the same conclusions anyway
|
|
# but we need to be sure. (An exception is that we don't force the
|
|
# log-error setting, since this script doesn't really depend on that,
|
|
# and some users might prefer to configure logging to syslog.)
|
|
# Note: set --basedir to prevent probes that might trigger SELinux
|
|
# alarms, per bug #547485
|
|
$exec --datadir="$datadir" --socket="$socketfile" \
|
|
--pid-file="$mypidfile" \
|
|
--basedir=/usr --user=mysql >/dev/null 2>&1 &
|
|
safe_pid=$!
|
|
# Spin for a maximum of N seconds waiting for the server to come up;
|
|
# exit the loop immediately if mysqld_safe process disappears.
|
|
# Rather than assuming we know a valid username, accept an "access
|
|
# denied" response as meaning the server is functioning.
|
|
ret=0
|
|
TIMEOUT="$STARTTIMEOUT"
|
|
while [ $TIMEOUT -gt 0 ]; do
|
|
RESPONSE=`/usr/bin/mysqladmin --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1` && break
|
|
echo "$RESPONSE" | grep -q "Access denied for user" && break
|
|
if ! /bin/kill -0 $safe_pid 2>/dev/null; then
|
|
echo "MySQL Daemon failed to start."
|
|
ret=1
|
|
break
|
|
fi
|
|
sleep 1
|
|
let TIMEOUT=${TIMEOUT}-1
|
|
done
|
|
if [ $TIMEOUT -eq 0 ]; then
|
|
echo "Timeout error occurred trying to start MySQL Daemon."
|
|
ret=1
|
|
fi
|
|
if [ $ret -eq 0 ]; then
|
|
action $"Starting $prog: " /bin/true
|
|
touch $lockfile
|
|
else
|
|
action $"Starting $prog: " /bin/false
|
|
fi
|
|
fi
|
|
return $ret
|
|
}
|
|
|
|
stop(){
|
|
if [ ! -f "$mypidfile" ]; then
|
|
# not running; per LSB standards this is "ok"
|
|
action $"Stopping $prog: " /bin/true
|
|
return 0
|
|
fi
|
|
MYSQLPID=`cat "$mypidfile"`
|
|
if [ -n "$MYSQLPID" ]; then
|
|
/bin/kill "$MYSQLPID" >/dev/null 2>&1
|
|
ret=$?
|
|
if [ $ret -eq 0 ]; then
|
|
TIMEOUT="$STOPTIMEOUT"
|
|
while [ $TIMEOUT -gt 0 ]; do
|
|
/bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break
|
|
sleep 1
|
|
let TIMEOUT=${TIMEOUT}-1
|
|
done
|
|
if [ $TIMEOUT -eq 0 ]; then
|
|
echo "Timeout error occurred trying to stop MySQL Daemon."
|
|
ret=1
|
|
action $"Stopping $prog: " /bin/false
|
|
else
|
|
rm -f $lockfile
|
|
rm -f "$socketfile"
|
|
action $"Stopping $prog: " /bin/true
|
|
fi
|
|
else
|
|
action $"Stopping $prog: " /bin/false
|
|
fi
|
|
else
|
|
# failed to read pidfile, probably insufficient permissions
|
|
action $"Stopping $prog: " /bin/false
|
|
ret=4
|
|
fi
|
|
return $ret
|
|
}
|
|
|
|
restart(){
|
|
stop
|
|
start
|
|
}
|
|
|
|
condrestart(){
|
|
[ -e $lockfile ] && restart || :
|
|
}
|
|
|
|
|
|
# See how we were called.
|
|
case "$1" in
|
|
start)
|
|
start
|
|
;;
|
|
stop)
|
|
stop
|
|
;;
|
|
status)
|
|
status -p "$mypidfile" $prog
|
|
;;
|
|
restart)
|
|
restart
|
|
;;
|
|
condrestart|try-restart)
|
|
condrestart
|
|
;;
|
|
reload)
|
|
exit 3
|
|
;;
|
|
force-reload)
|
|
restart
|
|
;;
|
|
*)
|
|
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
|
|
exit 2
|
|
esac
|
|
|
|
exit $?
|