Blame SOURCES/mysql.init.in

8ddd42
#!/bin/sh
8ddd42
#
8ddd42
# @DAEMON_NAME@	This shell script takes care of starting and stopping
8ddd42
#		the MySQL subsystem (mysqld).
8ddd42
#
8ddd42
# chkconfig: - 64 36
8ddd42
# description:	MySQL database server.
8ddd42
# processname: mysqld
8ddd42
# config: @sysconfdir@/my.cnf
8ddd42
# pidfile: /var/run/@DAEMON_NAME@/@DAEMON_NO_PREFIX@.pid
8ddd42
### BEGIN INIT INFO
8ddd42
# Provides: mysqld
8ddd42
# Required-Start: $local_fs $remote_fs $network $named $syslog $time
8ddd42
# Required-Stop: $local_fs $remote_fs $network $named $syslog $time
8ddd42
# Short-Description: start and stop MySQL server
8ddd42
# Description: MySQL database server
8ddd42
### END INIT INFO
8ddd42
8ddd42
# Source function library.
8ddd42
. /etc/rc.d/init.d/functions
8ddd42
8ddd42
# Source networking configuration.
8ddd42
. /etc/sysconfig/network
8ddd42
8ddd42
8ddd42
exec="@bindir@/mysqld_safe"
8ddd42
prog="@DAEMON_NAME@"
8ddd42
8ddd42
# Set timeouts here so they can be overridden from @sysconfdir@/sysconfig/@DAEMON_NO_PREFIX@
8ddd42
STARTTIMEOUT=300
8ddd42
STOPTIMEOUT=60
8ddd42
8ddd42
# User and group the daemon will run under
8ddd42
MYUSER=mysql
8ddd42
MYGROUP=mysql
8ddd42
8ddd42
# Edit the following file in order to re-write some of the environment
8ddd42
# variables defined above, like $STARTTIMEOUT, $STOPTIMEOUT, $exec
8ddd42
[ -e @sysconfdir@/sysconfig/@DAEMON_NO_PREFIX@ ] && . @sysconfdir@/sysconfig/@DAEMON_NO_PREFIX@
8ddd42
8ddd42
lockfile=/var/lock/subsys/$prog
8ddd42
8ddd42
# get options from my.cnf
8ddd42
source "@libexecdir@/mysql-scripts-common"
8ddd42
8ddd42
start(){
8ddd42
    [ -x $exec ] || exit 5
8ddd42
8ddd42
    # check permissions
8ddd42
    if ! touch $(dirname $socketfile) &>/dev/null ; then
8ddd42
        action $"Starting $prog: " /bin/false
8ddd42
        return 4
8ddd42
    fi
8ddd42
8ddd42
    # check to see if it's already running
8ddd42
    MYSQLDRUNNING=0
8ddd42
    if [ -f "$pidfile" ]; then
8ddd42
	MYSQLPID=`cat "$pidfile" 2>/dev/null`
8ddd42
	if [ -n "$MYSQLPID" ] && [ -d "/proc/$MYSQLPID" ] ; then
8ddd42
	    MYSQLDRUNNING=1
8ddd42
	fi
8ddd42
    fi
8ddd42
    RESPONSE=`@bindir@/mysqladmin --no-defaults --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1`
8ddd42
    if [ $MYSQLDRUNNING = 1 ] && [ $? = 0 ]; then
8ddd42
	# already running, do nothing
8ddd42
	action $"Starting $prog: " /bin/true
8ddd42
	ret=0
8ddd42
    elif [ $MYSQLDRUNNING = 1 ] && echo "$RESPONSE" | grep -q "Access denied for user"
8ddd42
    then
8ddd42
	# already running, do nothing
8ddd42
	action $"Starting $prog: " /bin/true
8ddd42
	ret=0
8ddd42
    else
cbb1af
        @libexecdir@/mysql-prepare-db-dir $MYUSER $MYGROUP >/dev/null || return 4
cbb1af
        @libexecdir@/mysql-check-socket >/dev/null || return 1
8ddd42
8ddd42
	# Pass all the options determined above, to ensure consistent behavior.
8ddd42
	# In many cases mysqld_safe would arrive at the same conclusions anyway
8ddd42
	# but we need to be sure.  (An exception is that we don't force the
8ddd42
	# log-error setting, since this script doesn't really depend on that,
8ddd42
	# and some users might prefer to configure logging to syslog.)
8ddd42
	# Note: set --basedir to prevent probes that might trigger SELinux
8ddd42
	# alarms, per bug #547485
8ddd42
	$exec   --datadir="$datadir" --socket="$socketfile" \
8ddd42
		--pid-file="$pidfile" \
8ddd42
		--basedir=@prefix@ --user=$MYUSER >/dev/null 2>&1 &
8ddd42
	safe_pid=$!
8ddd42
8ddd42
	# Wait until the daemon is up
8ddd42
        @libexecdir@/mysql-wait-ready "$safe_pid"
8ddd42
        ret=$?
8ddd42
8ddd42
	if [ $ret -eq 0 ]; then
8ddd42
	    action $"Starting $prog: " /bin/true
8ddd42
	    chmod o+r $pidfile >/dev/null 2>&1
8ddd42
	    touch $lockfile
8ddd42
	else
8ddd42
	    action $"Starting $prog: " /bin/false
8ddd42
	fi
8ddd42
    fi
8ddd42
    return $ret
8ddd42
}
8ddd42
8ddd42
stop(){
8ddd42
	if [ ! -f "$pidfile" ]; then
8ddd42
	    # not running; per LSB standards this is "ok"
8ddd42
	    action $"Stopping $prog: " /bin/true
8ddd42
	    return 0
8ddd42
	fi
8ddd42
	MYSQLPID=`cat "$pidfile" 2>/dev/null`
8ddd42
	if [ -n "$MYSQLPID" ]; then
8ddd42
	    if ! [ -d "/proc/$MYSQLPID" ] ; then
8ddd42
		# process doesn't run anymore
8ddd42
		action $"Stopping $prog: " /bin/true
8ddd42
		return 0
8ddd42
	    fi
8ddd42
	    /bin/kill "$MYSQLPID" >/dev/null 2>&1
8ddd42
	    ret=$?
8ddd42
	    if [ $ret -eq 0 ]; then
8ddd42
		TIMEOUT="$STOPTIMEOUT"
8ddd42
		while [ $TIMEOUT -gt 0 ]; do
8ddd42
		    /bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break
8ddd42
		    sleep 1
8ddd42
		    let TIMEOUT=${TIMEOUT}-1
8ddd42
		done
8ddd42
		if [ $TIMEOUT -eq 0 ]; then
8ddd42
		    echo "Timeout error occurred trying to stop MySQL Daemon."
8ddd42
		    ret=1
8ddd42
		    action $"Stopping $prog: " /bin/false
8ddd42
		else
8ddd42
		    rm -f $lockfile
8ddd42
		    rm -f "$socketfile"
8ddd42
		    action $"Stopping $prog: " /bin/true
8ddd42
		fi
8ddd42
	    else
8ddd42
		# kill command failed, probably insufficient permissions
8ddd42
		action $"Stopping $prog: " /bin/false
8ddd42
		ret=4
8ddd42
	    fi
8ddd42
	else
8ddd42
	    # failed to read pidfile, probably insufficient permissions
8ddd42
	    action $"Stopping $prog: " /bin/false
8ddd42
	    ret=4
8ddd42
	fi
8ddd42
	return $ret
8ddd42
}
8ddd42
 
8ddd42
restart(){
8ddd42
    stop
8ddd42
    start
8ddd42
}
8ddd42
8ddd42
condrestart(){
8ddd42
    [ -e $lockfile ] && restart || :
8ddd42
}
8ddd42
8ddd42
8ddd42
# See how we were called.
8ddd42
case "$1" in
8ddd42
  start)
8ddd42
    start
8ddd42
    ;;
8ddd42
  stop)
8ddd42
    stop
8ddd42
    ;;
8ddd42
  status)
8ddd42
    status -p "$pidfile" $prog
8ddd42
    ;;
8ddd42
  restart)
8ddd42
    restart
8ddd42
    ;;
8ddd42
  condrestart|try-restart)
8ddd42
    condrestart
8ddd42
    ;;
8ddd42
  reload)
8ddd42
    exit 3
8ddd42
    ;;
8ddd42
  force-reload)
8ddd42
    restart
8ddd42
    ;;
8ddd42
  *)
8ddd42
    echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
8ddd42
    exit 2
8ddd42
esac
8ddd42
8ddd42
exit $?