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