1#!/bin/sh 2# 3# mysql 4# 5 6MYSQL_LIB="/var/lib/mysql" 7MYSQL_RUN="/run/mysql" 8MYSQL_PIDFILE="$MYSQL_RUN/mysqld.pid" 9MYSQL_LOG="/var/log/mysql" 10MYSQL_LOGFILE="$MYSQL_LOG/mysqld.log" 11MYSQL_BIN="/usr/bin" 12 13wait_for_ready() { 14 WAIT_DELAY=5 15 while [ $WAIT_DELAY -gt 0 ]; do 16 if $MYSQL_BIN/mysqladmin ping > /dev/null 2>&1; then 17 return 0 18 fi 19 sleep 1 20 : $((WAIT_DELAY -= 1)) 21 done 22 return 1 23} 24 25start() { 26 # stderr is redirected to prevent a warning 27 # if mysql lib directory doesn't exist 28 if [ `ls -1 $MYSQL_LIB 2> /dev/null | wc -l` = 0 ] ; then 29 printf "Creating mysql system tables ... " 30 $MYSQL_BIN/mysql_install_db --basedir=/usr \ 31 --datadir=$MYSQL_LIB > /dev/null 2>&1 32 if [ $? != 0 ]; then 33 echo "FAIL" 34 exit 1 35 fi 36 chown -R mysql:mysql $MYSQL_LIB 37 echo "OK" 38 fi 39 40 # mysqld runs as user mysql, but /run is only writable by root 41 # so create a subdirectory for mysql. 42 install -d -o mysql -g root -m 0755 $MYSQL_RUN 43 44 # Also create logging directory as user mysql. 45 install -d -o mysql -g root -m 0755 $MYSQL_LOG 46 47 # We don't use start-stop-daemon because mysqld has its own 48 # wrapper script. 49 printf "Starting mysql ... " 50 $MYSQL_BIN/mysqld_safe --pid-file=$MYSQL_PIDFILE --user=mysql \ 51 --log-error=$MYSQL_LOGFILE > /dev/null 2>&1 & 52 wait_for_ready 53 [ $? = 0 ] && echo "OK" || echo "FAIL" 54} 55 56stop() { 57 printf "Stopping mysql ... " 58 if [ -f $MYSQL_PIDFILE ]; then 59 kill `cat $MYSQL_PIDFILE` > /dev/null 2>&1 60 [ $? = 0 ] && echo "OK" || echo "FAIL" 61 else 62 echo "FAIL" 63 fi 64} 65 66restart() { 67 stop 68 sleep 1 69 start 70} 71 72case "$1" in 73 start) 74 start 75 ;; 76 stop) 77 stop 78 ;; 79 restart) 80 restart 81 ;; 82 *) 83 echo "Usage: $0 {start|stop|restart}" 84 ;; 85esac 86