#!/bin/sh # # mysql # MYSQL_LIB="/var/lib/mysql" MYSQL_RUN="/run/mysql" MYSQL_PIDFILE="$MYSQL_RUN/mysqld.pid" MYSQL_LOG="/var/log/mysql" MYSQL_LOGFILE="$MYSQL_LOG/mysqld.log" MYSQL_BIN="/usr/bin" wait_for_ready() { WAIT_DELAY=5 while [ $WAIT_DELAY -gt 0 ]; do if $MYSQL_BIN/mysqladmin ping > /dev/null 2>&1; then return 0 fi sleep 1 : $((WAIT_DELAY -= 1)) done return 1 } start() { # stderr is redirected to prevent a warning # if mysql lib directory doesn't exist if [ `ls -1 $MYSQL_LIB 2> /dev/null | wc -l` = 0 ] ; then printf "Creating mysql system tables ... " $MYSQL_BIN/mysql_install_db --basedir=/usr \ --datadir=$MYSQL_LIB > /dev/null 2>&1 if [ $? != 0 ]; then echo "FAIL" exit 1 fi chown -R mysql:mysql $MYSQL_LIB echo "OK" fi # mysqld runs as user mysql, but /run is only writable by root # so create a subdirectory for mysql. install -d -o mysql -g root -m 0755 $MYSQL_RUN # Also create logging directory as user mysql. install -d -o mysql -g root -m 0755 $MYSQL_LOG # We don't use start-stop-daemon because mysqld has its own # wrapper script. printf "Starting mysql ... " $MYSQL_BIN/mysqld_safe --pid-file=$MYSQL_PIDFILE --user=mysql \ --log-error=$MYSQL_LOGFILE > /dev/null 2>&1 & wait_for_ready [ $? = 0 ] && echo "OK" || echo "FAIL" } stop() { printf "Stopping mysql ... " if [ -f $MYSQL_PIDFILE ]; then kill `cat $MYSQL_PIDFILE` > /dev/null 2>&1 [ $? = 0 ] && echo "OK" || echo "FAIL" else echo "FAIL" fi } restart() { stop sleep 1 start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) echo "Usage: $0 {start|stop|restart}" ;; esac