#!/bin/sh # # chkconfig: - 80 20 # # description: The start/stop script for MySQL - \ # very fast and reliable SQL database engine. # WITHOUT_RC_COMPAT=1 # Source function library. . /etc/init.d/functions ROOT=/var/lib/mysql DATADIR=`/usr/bin/my_print_defaults mysqld |sed -ne 's/^--datadir=\(.*\)/\1/pg' |tail -1` LOCKFILE="/var/lock/subsys/mysqld" PIDFILE="/var/lib/mysql/mysqld.pid" RETVAL=0 SourceIfNotEmpty /etc/sysconfig/mysqld [ -z "$OPT" ] && OPT="" adjust() { # Initiate databases. /usr/sbin/mysql_install_db action "Adjusting environment for mysqld:" /etc/chroot.d/mysql.all RETVAL=$? return $RETVAL } charset() { if [ ! -z "$CHSET" ]; then fgrep -qs 'charset name="'$CHSET'"' /usr/share/mysql/charsets/Index.xml && return \ || echo "Unable to find charset: $CHSET" fi unset LANG LANGUAGE LC_ALL default_charset="$(HOME=/var/empty . /etc/profile.d/lang.sh && locale \ | sed -ne 's/^LC_COLLATE="\?[^".]\+\.\([^"]\+\)"\?$/\1/p' \ | tr '[:upper:]' '[:lower:]' \ | tr -d '-')" case "$default_charset" in cp1251|koi8r|koi8u|utf8) CHSET="$default_charset" ;; *) echo "Unable to find proper charset from system locale, setting 'utf8'." echo "Please edit /etc/sysconfig/mysqld and set proper CHSET" CHSET=utf8 ;; esac } stop_wait() { for (( i=$1; $i>0; i=(($i-1)) )); do start-stop-daemon --stop --name mysqld --pidfile "$PIDFILE" --user mysql --test >/dev/null 2>&1 || return printf '%5s' "$i" sleep 1 printf "\b\b\b\b\b \b\b\b\b\b" done return 255 } start() { adjust || return charset start_daemon --lockfile "$LOCKFILE" --pidfile "$PIDFILE" --name mysqld --expect-user mysql -- safe_mysqld -C "$CHSET" $OPT RETVAL=$? return $RETVAL } stop() { echo -n "Sending TERM signal to mysqld: " stop_daemon --lockfile "$LOCKFILE" --pidfile "$PIDFILE" --name mysqld --expect-user mysql -TERM -- mysqld echo -n "Waiting for mysqld to actually shut down: " stop_wait 300 RETVAL=$? if [ $RETVAL == 255 ]; then echo_failure echo stop_daemon --lockfile "$LOCKFILE" --pidfile "$PIDFILE" --name mysqld --expect-user mysql -- mysqld RETVAL=$? return $RETVAL else echo_success echo return $RETVAL fi return $RETVAL } restart() { stop start } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart|reload) restart ;; adjust) adjust ;; condstop) if [ -e "$LOCKFILE" ]; then stop fi ;; condrestart) if [ -e "$LOCKFILE" ]; then restart fi ;; status) status --pidfile "$PIDFILE" --expect-user mysql mysqld RETVAL=$? ;; extendedstatus) if [ "$EUID" = 0 ]; then if [ -e "$LOCKFILE" ]; then mysqladmin status else $0 status fi else mysqladmin status # may bark if mysqld is down fi ;; *) msg_usage "${0##*/} {start|stop|reload|restart|condstop|condrestart|adjust|status|extendedstatus}" RETVAL=1 esac exit $RETVAL