]> git.pld-linux.org Git - packages/mysql.git/blame - mysql.init
- cosmetics
[packages/mysql.git] / mysql.init
CommitLineData
53a28f77 1#!/bin/sh
2#
7429b124 3# mysql A very fast and reliable SQL database engine
53a28f77 4#
7429b124 5# chkconfig: 2345 84 25
53a28f77 6#
350d9d8c 7# description: A very fast and reliable SQL database engine.
53a28f77 8#
0b079830
ER
9# $Id$
10
53a28f77 11# Source function library
12. /etc/rc.d/init.d/functions
13
14# Get network config
15. /etc/sysconfig/network
16
aac2c31f
AM
17# Get service config
18if [ -f /etc/sysconfig/mysql ]; then
350d9d8c 19 . /etc/sysconfig/mysql
aac2c31f 20else
350d9d8c 21 nls "Error: %s not found" /etc/sysconfig/mysql
95b0575d 22 nls "%s can't be run." MySQL
350d9d8c
PG
23 exit 1
24fi
25
0146fae1 26if [ -n "$MYSQL_DB_CLUSTERS" ]; then
350d9d8c 27 nls "Warning: MYSQL_DB_CLUSTERS is set. It's obsolete. Use %s instead." /etc/mysql/clusters.conf
aac2c31f
AM
28fi
29
95b0575d 30if [ -f /etc/mysql/clusters.conf ]; then
0ca65658 31 MYSQL_DB_CLUSTERS=$(awk -F= '!/^#/{print $2}' /etc/mysql/clusters.conf)
95b0575d
ER
32 if [ -z "$MYSQL_DB_CLUSTERS" ]; then
33 nls "Warning: there are no configured clusters."
34 fi
0146fae1 35
95b0575d 36else
0146fae1 37 nls "Warning: Missing clusters config file %s" /etc/mysql/clusters.conf
95b0575d
ER
38 if [ -z "$MYSQL_DB_CLUSTERS" ]; then
39 nls "Warning: there are no configured clusters."
40 nls "Using default cluster /var/lib/mysql (compatibility mode)"
41 MYSQL_DB_CLUSTERS=/var/lib/mysql
42 fi
aac2c31f
AM
43fi
44
95b0575d 45
ac28c610 46# Check that networking is up
8eb71226 47if is_yes "${NETWORKING}"; then
213fc2f2 48 if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status -a "$1" != init ]; then
8eb71226 49 msg_network_down MySQL
50 exit 1
51 fi
52else
53 exit 0
e9ca44ab 54fi
55
aac2c31f
AM
56action="$1"
57
58# any db cluster as command line argument?
521444a9 59if [ $# -gt 1 ]; then
350d9d8c
PG
60 shift
61 # perform action for specified clusters only
30b2aa9a
ER
62 for a in "$@"; do
63 # try auto resolving from /etc/mysql/clusters.conf
64 if [[ "$a" != /* ]]; then
65 m=$(awk -va="$a" -F= 'substr($0, 1, length(a)) == a {print $1}' /etc/mysql/clusters.conf)
66 if [ -z "$m" ]; then
67 echo >&2 "Cluster name '$a' did not match anything!"
68 exit 1
69 fi
70 if [ $(echo "$m" | wc -l) -gt 1 ]; then
71 echo >&2 "Cluster name '$a' ambiguous:" $m
72 exit 1
73 fi
74 a=$(awk -va="$a" -F= 'substr($0, 1, length(a)) == a {print $2}' /etc/mysql/clusters.conf)
75 fi
76 DB_CLUSTERS="$DB_CLUSTERS $a"
77 done
aac2c31f 78else
350d9d8c 79 DB_CLUSTERS="$MYSQL_DB_CLUSTERS"
53a28f77 80fi
81
7c1478d5
ER
82# global error log, if mysqld.conf hasn't migrated to log-error style
83MYSQL_ERRLOG=/var/log/mysql/mysqld.log
c85758f0 84MYSQL_STOP_WAIT_TIME=${MYSQL_STOP_WAIT_TIME:-900}
aac2c31f
AM
85
86#
87# Useful functions.
88#
89
90#
91# check for mysql status
92#
93# arguments:
94# $1 - db cluster
c85758f0 95# $2 - start|stop
aac2c31f
AM
96#
97# sets variables:
c85758f0 98# MYSQL_STATUS = starting | running | not running | died
aac2c31f
AM
99# MYSQL_PID = pid of mysqld process
100#
101mysqlstatus() {
102 clusterdir="$1"
c85758f0
AM
103 mode="$2"
104
aac2c31f 105 mysqlgetconfig "$clusterdir"
d405c4eb 106
350d9d8c
PG
107 MYSQL_STATUS="not running"
108 MYSQL_PID="unknown"
c85758f0
AM
109 MYSQL_PIDFILE_PID=""
110 MYSQL_GREP_PID=""
aac2c31f 111
c85758f0
AM
112 if [ -f "$MYSQL_PIDFILE" ]; then
113 MYSQL_PIDFILE_PID=$(cat "$MYSQL_PIDFILE")
114 fi
115
116 if [ -n "$MYSQL_PIDFILE_PID" ]; then
117 MYSQL_PID=$MYSQL_PIDFILE_PID
118 if [ ! -d "/proc/$MYSQL_PID" ]; then
119 MYSQL_STATUS="died"
120 return
376ffa12 121 elif (grep -qa "$MYSQL_PIDFILE" /proc/$MYSQL_PID/cmdline 2> /dev/null); then
c85758f0
AM
122 MYSQL_STATUS="running"
123 return
124 fi
125 fi
6d3c5db5 126
c85758f0 127 if [ "$mode" = "start" ]; then
376ffa12 128 MYSQL_GREP_PID=$(grep -lE "^/usr/sbin/mysqld.*${MYSQL_PIDFILE}" /proc/[0-9]*/cmdline 2> /dev/null | awk -F "/" '{ print $3; exit; }')
c85758f0
AM
129 if [ -n "$MYSQL_GREP_PID" ]; then
130 MYSQL_PID=$MYSQL_GREP_PID
0ca65658 131 if grep -qa "$MYSQL_PIDFILE" /proc/$MYSQL_PID/cmdline 2> /dev/null; then
c85758f0
AM
132 if [ -f "$MYSQL_PIDFILE" ]; then
133 MYSQL_PIDFILE_PID=$(cat "$MYSQL_PIDFILE")
134 fi
135 if [ -n "$MYSQL_PIDFILE_PID" ]; then
136 MYSQL_PID=$MYSQL_PIDFILE_PID
137 MYSQL_STATUS="running"
138 return
139 else
140 MYSQL_STATUS="starting"
141 return
142 fi
143 fi
144 fi
6d3c5db5 145 fi
c85758f0
AM
146
147 # else default, "not running"
aac2c31f
AM
148}
149
150# get mysql configuration in variables
151# MYSQL_CONFIG MYSQL_DATA_DIR MYSQL_USER MYSQL_PIDFILE
152#
153# arguments
154# $1 - db cluster
155
156mysqlgetconfig() {
157 clusterdir="$1"
aac2c31f
AM
158
159 # emulate old behaviour if only one cluster specified
160 if [ "$clusterdir" = "$MYSQL_DB_CLUSTERS" -a "$clusterdir" = "/var/lib/mysql" -a -f /etc/mysqld.conf ]; then
0ca65658 161 MYSQL_RA_COMPAT=yes
aac2c31f 162 config_file=/etc/mysqld.conf
521444a9 163 else
0ca65658
ER
164 config=$(awk -F= -vclusterdir="$clusterdir" '!/^#/{ if (clusterdir == $2) print $1}' /etc/mysql/clusters.conf)
165 if [[ $config = /* ]]; then
d54e166d 166 config_file="$config"
fe2f6e01 167 elif [ -f "/etc/mysql/$config" ]; then
0ca65658 168 config_file="/etc/mysql/$config"
d54e166d
AM
169 else
170 config_file="$clusterdir/mysqld.conf"
171 fi
350d9d8c 172 fi
aac2c31f 173
0ca65658 174 MYSQL_CLUSTER_DIR="$clusterdir"
d405c4eb 175
521444a9 176 if [ -z "$config_file" ]; then
f9ad67df
PG
177 nls "Error: Can't find config file for %s cluster" "$clusterdir"
178 exit 6
179 else
0ca65658 180 MYSQL_CONFIG="$config_file"
f9ad67df 181 fi
d405c4eb 182
aac2c31f
AM
183 if [ ! -f "$config_file" ]; then
184 nls "Error: config file %s not found" "$config_file"
350d9d8c
PG
185 nls "MySQL can't be run. Did you initialize DB by doing \`$0 init'?"
186 exit 6
aac2c31f
AM
187 fi
188
189 eval `awk '
823c13f7
SZ
190/^[ \t]*\[.*\][ \t]*$/ {
191 match($0,/\[.*\]/)
0ca65658 192 section=substr($0, RSTART + 1, RSTART + RLENGTH - 3)
823c13f7 193}
0ca65658
ER
194section == "mysqld" && $2 ~ "=" {
195 if ($1 == "datadir") {
823c13f7 196 printf("MYSQL_DATA_DIR=%s;", $3)
0ca65658 197 } else if ($1 == "user") {
823c13f7 198 printf("MYSQL_USER=%s;", $3)
0ca65658 199 } else if ($1 == "pid-file") {
823c13f7 200 printf("MYSQL_PIDFILE=%s;", $3)
0ca65658 201 } else if ($1 == "socket") {
aac2c31f 202 printf("MYSQL_SOCKET=%s;", $3)
823c13f7
SZ
203 }
204}
aac2c31f 205' $config_file`
e9ca44ab 206
e9ca44ab 207
d54e166d 208 if is_yes "$MYSQL_RA_COMPAT"; then
350d9d8c 209 MYSQL_DATA_DIR_SUB=""
8ee1d59c 210 else
350d9d8c 211 MYSQL_DATA_DIR_SUB="/mysqldb"
8ee1d59c 212 fi
d405c4eb 213
8ee1d59c 214 if [ -z "$MYSQL_DATA_DIR" -o "$MYSQL_DATA_DIR" != "${clusterdir}${MYSQL_DATA_DIR_SUB}/db" ]; then
350d9d8c
PG
215 nls "Error: datadir specified in %s should be %s" "$config_file" "$clusterdir${MYSQL_DATA_DIR_SUB}/db"
216 nls " MySQL can't be run."
217 exit 6
8ee1d59c 218 fi
d405c4eb 219
8ee1d59c
AM
220 if [ -z "$MYSQL_PIDFILE" -o "$MYSQL_PIDFILE" != "$clusterdir${MYSQL_DATA_DIR_SUB}/mysql.pid" ]; then
221 nls "Error: pid-file specified in %s should be %s" "$config_file" "$clusterdir${MYSQL_DATA_DIR_SUB}/mysql.pid"
222 nls " MySQL can't be run."
223 exit 6
224 fi
e9ca44ab 225
aac2c31f 226 if [ -z $MYSQL_USER ]; then
350d9d8c
PG
227 echo "$(nls 'MySQL user not configured properly')"'!' >&2
228 nls "Edit %s and configure it." "$config_file" >&2
229 exit 6
860cd80c 230 fi
aac2c31f 231}
e9ca44ab 232
aac2c31f
AM
233# start mysql
234mysqlstart() {
235 clusterdir="$1"
236 mysqlgetconfig "$clusterdir"
237 if [ ! -d "$MYSQL_DATA_DIR/mysql" ]; then
238 nls "MySQL cluster %s not initialized." "$clusterdir"
239 nls "Try \`%s init %s' before start." "$0" "$clusterdir"
350d9d8c
PG
240 exit 6
241 fi
02e96f2e 242
aac2c31f
AM
243 msg_starting "MySQL $clusterdir"
244 busy
245 [ -z "$DEFAULT_SERVICE_RUN_NICE_LEVEL" ] && DEFAULT_SERVICE_RUN_NICE_LEVEL=0
c85758f0 246 rm -f "$MYSQL_PIDFILE"
c4fbabf1 247
7c1478d5
ER
248 if [ "$(grep -c ^log-error $MYSQL_CONFIG)" -lt 1 ]; then
249 # error log not defined in config file. add one
250 MYSQL_OPTIONS="$MYSQL_OPTIONS --log-error=$MYSQL_ERRLOG"
251 fi
252
c4fbabf1 253 TMPDIR=/tmp nice -n ${SERVICE_RUN_NICE_LEVEL:-$DEFAULT_SERVICE_RUN_NICE_LEVEL} \
7429b124 254 /usr/bin/setsid /usr/sbin/mysqld \
c4fbabf1
ER
255 --defaults-file=$MYSQL_CONFIG \
256 --datadir=$MYSQL_DATA_DIR \
7c1478d5
ER
257 --pid-file=$MYSQL_PIDFILE \
258 $MYSQL_OPTIONS &
c4fbabf1
ER
259 pid=$!
260
261 sleep 0.1
c85758f0
AM
262 mysqlstatus "$clusterdir" start
263 # it takes longer for mysqld to start and create pidfile if it has to recover innodb transactions
264 if [ "$MYSQL_STATUS" = "starting" ]; then
c4fbabf1
ER
265 echo ""
266 show "Waiting for MySQL to start"
267 busy
268
269 # while the pid is running, mysql is starting up
270 # if the pidfile was created, it started up successfully
271 # if either case fails we break and report status
272 while true; do
273 [ -d /proc/$pid ] || break
c85758f0 274 [ -f "$MYSQL_PIDFILE" ] && break
c4fbabf1 275 sleep 0.2
c85758f0
AM
276 done
277 fi
278
279 mysqlstatus "$clusterdir" start
6d3c5db5 280 if [ "$MYSQL_STATUS" = "running" -a "$MYSQL_PID" != "unknown" ]; then
aac2c31f 281 ok
47fd5a6a 282 elif [ "$MYSQL_STATUS" = "died" ]; then
350d9d8c 283 RETVAL=1
47fd5a6a 284 died
aac2c31f
AM
285 else
286 RETVAL=1
287 fail
53a28f77 288 fi
aac2c31f
AM
289}
290
291# stop mysql
292mysqlstop() {
293 clusterdir="$1"
c85758f0 294 mysqlstatus "$clusterdir" stop
aac2c31f
AM
295 msg_stopping "MySQL $clusterdir"
296 busy
95b0575d 297
95b0575d 298 # try graceful shutdown -- send shutdown command
566e62bb 299 # requires mysql_sysadmin user proper privs
465c110e 300 /usr/bin/mysqladmin --defaults-file=$MYSQL_CONFIG ${MYSQL_SOCKET:+--socket=$MYSQL_SOCKET} shutdown >/dev/null 2>&1
c85758f0 301 mysqlstatus "$clusterdir" stop
95b0575d 302
c85758f0
AM
303 if [ "$MYSQL_PID" != "unknown" ]; then
304 kill -TERM "$MYSQL_PID" 2> /dev/null
305 for nr in $(seq 1 $(($MYSQL_STOP_WAIT_TIME*10))); do
306 [ -d "/proc/$MYSQL_PID" ] || break
307 sleep 0.1
308 done
309 fi
310
311 mysqlstatus "$clusterdir" stop
47fd5a6a 312 if [ "$MYSQL_STATUS" = "died" ]; then
350d9d8c 313 died
c85758f0 314 elif [ "$MYSQL_STATUS" = "running" -o "$MYSQL_STATUS" = "starting" ]; then
aac2c31f 315 fail
b92e5cd1 316 else
aac2c31f 317 ok
b92e5cd1 318 fi
aac2c31f
AM
319}
320
321#
322# check for running mysql instances; if any instance is running then
323# create subsys lock file
324#
325mysqlsubsys() {
350d9d8c
PG
326 # check for every defined db cluster in sysconfig file
327 for mysqldir in $DB_CLUSTERS; do
328 mysqlstatus "$mysqldir"
329 if [ "$MYSQL_STATUS" = "running" ]; then
330 touch /var/lock/subsys/mysql
331 return
332 fi
333 done
334 rm -f /var/lock/subsys/mysql
aac2c31f
AM
335}
336
337mysqlinit() {
338 clusterdir="$1"
8ee1d59c
AM
339
340 if [ -f /etc/mysqld.conf ]; then
350d9d8c
PG
341 nls "Running in \`no cluster compat' mode: can't initialize database."
342 nls "Move /etc/mysqld.conf away and rerun \`$0 init' (new config will be in $clusterdir)."
343 exit 1
8ee1d59c
AM
344 fi
345
521444a9
AM
346 if [ -f "$clusterdir/mysqld.conf" ]; then
347 mysqlgetconfig "$clusterdir"
348 else
349 MYSQL_USER="mysql"
350 MYSQL_CLUSTER_DIR="$clusterdir"
351 MYSQL_DATA_DIR="$clusterdir/mysqldb/db"
352 MYSQL_PIDFILE="$clusterdir/mysqldb/mysql.pid"
353 MYSQL_SOCKET="$clusterdir/mysqldb/mysql.sock"
fe98cc4a
ER
354
355 # this $MYSQL_CONFIG will be created later
356 MYSQL_CONFIG="$MYSQL_CLUSTER_DIR/mysqld.conf"
521444a9 357 fi
aac2c31f 358
d460d24d 359 show "Initializing cluster %s" "$clusterdir"; echo
aac2c31f 360
573e1dcc 361 # Check if not exist init database
e9ca44ab 362 if [ -d "$MYSQL_DATA_DIR/mysql" ]; then
c70c8930 363 nls "Seems that database is initialized now. Remove by hand %s" "$MYSQL_DATA_DIR/mysql"
b92e5cd1 364 nls "before initializing database."
aac2c31f
AM
365 nls "For now skipping cluster %s." "$clusterdir"
366 return
e9ca44ab 367 fi
368
5f961775 369 show "Installing MySQL system tables for $MYSQL_DATA_DIR"
e9ca44ab 370 busy
d405c4eb
JB
371 TMP=/tmp TMPDIR=/tmp
372
c4fbabf1 373 mkdir -p "$MYSQL_DATA_DIR" > /dev/null 2>&1
f5d63301
AM
374 # Using mysql:mysql for MYSQL_CLUSTER_DIR is creating SECURITY hole, root:root is proper
375 chown root:root "$MYSQL_CLUSTER_DIR"
5f961775 376 chown mysql:mysql "$MYSQL_CLUSTER_DIR/mysqldb" "$MYSQL_DATA_DIR" > /dev/null 2>&1
653cf157 377 chmod 751 "$MYSQL_CLUSTER_DIR" "$MYSQL_CLUSTER_DIR/mysqldb"
444f9f3c
AM
378
379 if [ -f /usr/share/mysql/mysqld.conf -a ! -f "$MYSQL_CLUSTER_DIR/mysqld.conf" ]; then
b6369c60
ER
380 sed -e "
381 s#\(datadir.*\)=.*#\1= $MYSQL_DATA_DIR#g;
382 s#\(pid-file.*\)=.*#\1= $MYSQL_PIDFILE#g;
383 s#\(socket.*\)=.*#\1= $MYSQL_SOCKET#g;
384 s#@clusterdir@#$MYSQL_CLUSTER_DIR#g;
385 " /usr/share/mysql/mysqld.conf > "$MYSQL_CLUSTER_DIR/mysqld.conf"
54a1f368 386 chown root:root "$MYSQL_CLUSTER_DIR/mysqld.conf"
444f9f3c
AM
387 chmod 640 "$MYSQL_CLUSTER_DIR/mysqld.conf"
388 fi
cc4d3f78 389
a08fc1eb 390 if [ ! -e /var/lib/mysql/mysql.sock ] || [ -L /var/lib/mysql/mysql.sock ] && [ -z "$(readlink /var/lib/mysql/mysql.sock)" ]; then
0ca65658 391 sock=${MYSQL_SOCKET#/var/lib/mysql/} # make it relative if possible
5fe13e55 392 ln -s "$sock" /var/lib/mysql/mysql.sock
cc4d3f78 393 fi
aac2c31f 394
b9c4f95d 395 cat > $MYSQL_DATA_DIR/mysql-init.sql <<-EOF
bb39d376 396 CREATE DATABASE mysql;
4444725f 397 use mysql;
ac02fcd5 398 $(cat /usr/share/mysql/mysql_system_tables.sql)
5f961775 399 $(sed -e "/@current_hostname/d" /usr/share/mysql/mysql_system_tables_data.sql)
b9c4f95d
ER
400EOF
401
402 ok=0
5ab9fb7b
JR
403 /usr/sbin/mysqld \
404 --defaults-file=$MYSQL_CLUSTER_DIR/mysqld.conf \
405 --bootstrap \
406 --skip-grant-tables \
407 --datadir=$MYSQL_DATA_DIR \
408 --user=$MYSQL_USER \
409 --slave-load-tmpdir=$MYSQL_DATA_DIR \
410 --tmpdir=$MYSQL_DATA_DIR \
411 --log-error=$MYSQL_ERRLOG \
da87c30d 412 < $MYSQL_DATA_DIR/mysql-init.sql && ok=1
5062ac41 413 [ -f $MYSQL_DATA_DIR/mysql/host.frm ] || ok=0
c4fbabf1 414
b9c4f95d
ER
415 if [ "$ok" = 1 ]; then
416 rm -f $MYSQL_DATA_DIR/mysql-init.sql
5f961775
JR
417 ok
418 cat << END_OF_MSG
6a46c354 419
420PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL USERS!
5f961775
JR
421This is done, after starting database, in the order shown,
422with:
423
424For 'mysql_sysadmin' (RELOAD and SHUTDOWN privileges):
425echo "update mysql.user set password=password('newpassword') where user='mysql_sysadmin'; FLUSH PRIVILEGES;" | mysql -u mysql -S $MYSQL_SOCKET
6a46c354 426
5f961775
JR
427For 'mysql' user (ALL privileges, DB admin):
428echo "update mysql.user set password=password('newpassword') where user='mysql'; FLUSH PRIVILEGES;" | mysql -u mysql -S $MYSQL_SOCKET
6a46c354 429
566e62bb 430NOTE: mysql_sysadmin password should be placed to $MYSQL_CONFIG in
6a46c354 431mysqladmin section. See the manual for more instructions.
566e62bb 432(This user is used at logs rotation and server shutdown)
e9ca44ab 433
5f961775
JR
434END_OF_MSG
435 show "Filling help tables..."
436 ok=0
437 ( echo "use mysql;"; cat /usr/share/mysql/fill_help_tables.sql ) | \
438 /usr/sbin/mysqld --bootstrap --skip-grant-tables \
439 --datadir=$MYSQL_DATA_DIR --user=$MYSQL_USER \
da87c30d
ER
440 --slave-load-tmpdir=$MYSQL_DATA_DIR --tmpdir=$MYSQL_DATA_DIR --log-error=$MYSQL_ERRLOG \
441 && ok=1
5f961775
JR
442 if [ "$ok" = 1 ]; then
443 ok
444 else
445 cat << END_OF_MSG
446
447WARNING: HELP FILES ARE NOT COMPLETELY INSTALLED!
448The "HELP" command might not work properly.
16bf26ff 449
e9ca44ab 450END_OF_MSG
5f961775
JR
451 fi
452 else
453 fail
454 cat << END_OF_MSG
e9ca44ab 455Installation of grant tables FAILED!
456
6df74636
ER
457The initialization SQL script was preserved at $MYSQL_DATA_DIR/mysql-init.sql
458
b9c4f95d
ER
459Examine the logs in /var/log/mysql for more information. You can
460also try to start the mysqld daemon with:
e9ca44ab 461
462/usr/sbin/mysqld --skip-grant &
463
dc7a177f 464You can use the command line tool mysql to connect to the mysql
e9ca44ab 465database and look at the grant tables:
466
dc7a177f 467shell> mysql -u mysql mysql
e9ca44ab 468mysql> show tables
469
470Try 'mysqld --help' if you have problems with paths. Setting on
471logging in /etc/mysqld.conf gives you a log in /var/log/mysql/log that
472may be helpful. The latest information about MySQL is available on the
78b16243 473web at http://www.mysql.com/.
e9ca44ab 474
a3eb9e7b 475Please check PLD Linux ftp site for newer versions of this package.
e9ca44ab 476
477Please consult the MySQL manual section: 'Problems running
478mysql_install_db', and the manual section that describes problems on
479your OS. Another information source is the MySQL email archive.
480Please check all of the above before mailing us! And if you do mail
dc7a177f 481us, you MUST use the mysqlbug script!
e9ca44ab 482
483END_OF_MSG
5f961775 484 exit 1
aac2c31f
AM
485 fi
486}
487
488#
489# End of useful functions.
490#
491
323256af 492start() {
aac2c31f 493 for mysqldir in $DB_CLUSTERS; do
c85758f0 494 mysqlstatus "$mysqldir" start
aac2c31f
AM
495 if [ "$MYSQL_STATUS" = "running" ]; then
496 msg_already_running "MySQL $mysqldir"
497 else
498 mysqlstart "$mysqldir"
499 fi
500 done
501 mysqlsubsys
323256af
ER
502}
503
504stop() {
aac2c31f 505 for mysqldir in $DB_CLUSTERS; do
c85758f0 506 mysqlstatus "$mysqldir" stop
aac2c31f
AM
507 if [ "$MYSQL_STATUS" = "not running" ]; then
508 msg_not_running "MySQL $mysqldir"
509 else
510 mysqlstop "$mysqldir"
511 fi
512 done
513 mysqlsubsys
323256af
ER
514}
515
7429b124
JB
516condrestart() {
517 if [ -f /var/lock/subsys/mysql ]; then
518 stop
519 start
520 else
521 msg_not_running "MySQL"
522 RETVAL=$1
523 fi
524}
525
323256af
ER
526RETVAL=0
527case "$action" in
528 start)
529 start
530 ;;
531 stop)
532 stop
aac2c31f 533 ;;
7429b124
JB
534 restart)
535 stop
536 start
537 ;;
538 try-restart)
539 condrestart 0
540 ;;
541 force-reload)
542 condrestart 7
543 ;;
aac2c31f
AM
544 status)
545 for mysqldir in $DB_CLUSTERS; do
546 mysqlstatus "$mysqldir"
2bac5c2d 547 if [ "$MYSQL_STATUS" = "running" ]; then
27698ac1 548 show "MySQL cluster %s, PID %s" "$mysqldir" "$MYSQL_PID"
b2bb6a82 549 pids="$pids/$MYSQL_PID/"
2bac5c2d
ER
550 progress "$MYSQL_STATUS"
551 else
27698ac1 552 show "MySQL cluster %s" "$mysqldir"
2bac5c2d
ER
553 progress "$MYSQL_STATUS" "$CFAIL"
554 fi
555 echo
aac2c31f 556 done
b2bb6a82
ER
557
558 for pid in $(/sbin/pidof mysqld); do
559 if [[ $pids != */$pid/* ]]; then
560 running="$running $pid"
561 fi
562 done
b7d0a657 563
a5595931 564 if [ $# = 1 -a "$running" ]; then
b2bb6a82
ER
565 nls "Warning: MySQL Daemon processes not under clusters.conf control:"
566 # see if we can display their status
567 for pid in $running; do
b7d0a657 568 datadir=$(cat /proc/$pid/cmdline | tr '\0' '\n' | fgrep -- --datadir=)
b2bb6a82
ER
569 datadir=${datadir#--datadir=} # strip --datadir
570 mysqldir=${datadir%/mysqldb/db} # strip /mysqldb/db
571 mysqlstatus "$mysqldir"
572 if [ "$MYSQL_STATUS" = "running" ]; then
573 show "MySQL cluster %s, PID %s" "$mysqldir" "$pid"
574 progress "$MYSQL_STATUS"
575 else
576 show "MySQL cluster %s" "$mysqldir"
577 progress "$MYSQL_STATUS" "$CFAIL"
578 fi
579 echo
580 done
581 fi
aac2c31f 582 ;;
aac2c31f
AM
583 init)
584 for mysqldir in $DB_CLUSTERS; do
585 mysqlinit "$mysqldir"
586 done
60bd204c 587 exit $?
573e1dcc 588 ;;
6fb7a89b
AM
589 flush-logs)
590 for mysqldir in $DB_CLUSTERS; do
591 mysqlgetconfig "$mysqldir"
7c37979d
ER
592 # just if mysqld is really running
593 if /usr/bin/mysqladmin --defaults-file="$MYSQL_CONFIG" --socket="$MYSQL_SOCKET" ping >/dev/null 2>&1; then
594 /usr/bin/mysqladmin --defaults-file="$MYSQL_CONFIG" --socket="$MYSQL_SOCKET" flush-logs
595 fi
6fb7a89b 596 done
6fb7a89b 597 ;;
53a28f77 598 *)
7429b124 599 msg_usage "$0 {start|stop|init|restart|try-restart|force-reload|status}"
02e96f2e 600 exit 3
53a28f77 601esac
40c36bca 602
ee9b6a50 603exit $RETVAL
This page took 0.145454 seconds and 4 git commands to generate.