86 lines
1.6 KiB
Bash
86 lines
1.6 KiB
Bash
#!/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
|