]> git.pld-linux.org Git - packages/mysql.git/blob - mysql.init
- move configuration files to clusters dirs and prepare initial config
[packages/mysql.git] / mysql.init
1 #!/bin/sh
2 #
3 # mysql         A very fast and reliable SQL database engine
4 #
5 # chkconfig:    2345 84 25
6 #
7 # description:  A very fast and reliable SQL database engine.
8 #
9
10 # Source function library
11 . /etc/rc.d/init.d/functions
12
13 # Get network config
14 . /etc/sysconfig/network
15
16 # Get service config
17 if [ -f /etc/sysconfig/mysql ]; then
18         . /etc/sysconfig/mysql
19 else
20         nls "Error: %s not found" /etc/sysconfig/mysql
21         nls " MySQL can't be run."
22         exit 1
23 fi
24
25 if [ -z "$MYSQL_DB_CLUSTERS" ]; then
26         nls "Warning: MYSQL_DB_CLUSTERS not found or is empty"
27         nls "defaulting to /var/lib/mysql (compatiblity mode)"
28         MYSQL_DB_CLUSTERS="/var/lib/mysql"
29 fi
30
31 # Check that networking is up
32 if is_yes "${NETWORKING}"; then
33         if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status -a "$1" != init ]; then
34                 msg_network_down MySQL
35                 exit 1
36         fi
37 else
38         exit 0
39 fi
40
41 action="$1"
42
43 # any db cluster as command line argument?
44 if [ $# -gt 1 ]; then
45         shift
46         # perform action for specified clusters only
47         DB_CLUSTERS="$@"
48 else
49         DB_CLUSTERS="$MYSQL_DB_CLUSTERS"
50 fi
51
52 MYSQL_ERRLOG=/var/log/mysql/err
53
54 #
55 # Useful functions.
56 #
57
58 #
59 # check for mysql status
60 #
61 # arguments:
62 # $1 - db cluster
63 #
64 # sets variables:
65 # MYSQL_STATUS = running | not running
66 # MYSQL_PID    = pid of mysqld process
67 #
68 mysqlstatus() {
69         clusterdir="$1"
70         mysqlgetconfig "$clusterdir"
71         MYSQL_STATUS="unknown"
72         MYSQL_PID="unknown"
73
74         [ -f "$MYSQL_PIDFILE" ] && MYSQL_PID=$(cat "$MYSQL_PIDFILE")
75
76         if [ ! -d "/proc/$MYSQL_PID" -a "$MYSQL_PID" != "unknown" ]; then
77             MYSQL_STATUS="died"
78         elif [ -d "/proc/$MYSQL_PID" ]; then
79             grep -q "$MYSQL_PIDFILE" /proc/$MYSQL_PID/cmdline && MYSQL_STATUS="running" || MYSQL_STATUS="not running"
80         fi
81 }
82
83 # get mysql configuration in variables
84 # MYSQL_CONFIG MYSQL_DATA_DIR MYSQL_USER MYSQL_PIDFILE
85 #
86 # arguments
87 # $1 - db cluster
88
89 mysqlgetconfig() {
90         clusterdir="$1"
91         config_file="$clusterdir/mysqld.conf"
92
93         # emulate old behaviour if only one cluster specified
94         if [ "$clusterdir" = "$MYSQL_DB_CLUSTERS" -a "$clusterdir" = "/var/lib/mysql" -a -f /etc/mysqld.conf ]; then
95                 MYSQL_NO_CLUSTER_COMPAT=yes; export MYSQL_NO_CLUSTER_COMPAT
96                 config_file=/etc/mysqld.conf
97         fi
98
99         MYSQL_CLUSTER_DIR="$clusterdir"; export MYSQL_CLUSTER_DIR
100         MYSQL_CONFIG="$config_file"; export MYSQL_CONFIG
101
102         if [ ! -f "$config_file" ]; then
103                 nls "Error: config file %s not found" "$config_file"
104                 nls " MySQL can't be run."
105                 exit 6
106         fi
107
108         eval `awk '
109 /^[ \t]*\[.*\][ \t]*$/ {
110         match($0,/\[.*\]/)
111         section=substr($0,RSTART+1,RSTART+RLENGTH-3)
112 }
113 section=="mysqld" && $2~"=" {
114         if ($1=="datadir") {
115                 printf("MYSQL_DATA_DIR=%s;", $3)
116         } else if ($1=="user") {
117                 printf("MYSQL_USER=%s;", $3)
118         } else if ($1=="pid-file") {
119                 printf("MYSQL_PIDFILE=%s;", $3)
120         } else if ($1=="socket") {
121                 printf("MYSQL_SOCKET=%s;", $3)
122         }
123 }
124 END {
125         print "export MYSQL_DATA_DIR MYSQL_USER MYSQL_PIDFILE MYSQL_SOCKET"
126 }
127 ' $config_file`
128
129         if [ -z "$MYSQL_DATA_DIR" -o "$MYSQL_DATA_DIR" != "$clusterdir/db" ]; then
130                 nls "Error: datadir specified in %s should be %s" "$config_file" "$clusterdir/db"
131                 nls " MySQL can't be run."
132                 exit 6
133         fi
134
135         if ! is_yes "$MYSQL_NO_CLUSTER_COMPAT"; then                    
136                 if [ -z "$MYSQL_PIDFILE" -o "$MYSQL_PIDFILE" != "$clusterdir/mysql.pid" ]; then
137                         nls "Error: pid-file specified in %s should be %s" "$config_file" "$clusterdir/mysql.pid"
138                         nls " MySQL can't be run."
139                         exit 6
140                 fi
141         fi
142
143         if [ -z $MYSQL_USER ]; then
144                 echo "$(nls 'MySQL user not configured properly')"'!' >&2
145                 nls "Edit %s and configure it." "$config_file" >&2
146                 exit 6
147         fi
148 }
149
150 # start mysql
151 mysqlstart() {
152         clusterdir="$1"
153         mysqlgetconfig "$clusterdir"
154         if [ ! -d "$MYSQL_DATA_DIR/mysql" ]; then
155                 nls "MySQL cluster %s not initialized." "$clusterdir"
156                 nls "Try \`%s init %s' before start." "$0" "$clusterdir"
157                 exit 6
158         fi
159
160         msg_starting "MySQL $clusterdir"
161         busy
162         [ -z "$DEFAULT_SERVICE_RUN_NICE_LEVEL" ] && DEFAULT_SERVICE_RUN_NICE_LEVEL=0
163         TMPDIR=/tmp nice -n ${SERVICE_RUN_NICE_LEVEL:-$DEFAULT_SERVICE_RUN_NICE_LEVEL} /usr/sbin/mysqld --defaults-file=$MYSQL_CONFIG --datadir=$MYSQL_DATA_DIR --pid-file=$MYSQL_PIDFILE >> $MYSQL_ERRLOG 2>&1 &
164         sleep 1
165         mysqlstatus "$clusterdir"
166         if [ "$MYSQL_STATUS" = "running" -a "$MYSQL_PID" != "unknown" ]; then
167                 ok
168         elif [ "$MYSQL_STATUS" = "died" ]; then
169                 RETVAL=1
170                 died
171         else
172                 RETVAL=1
173                 fail
174         fi
175 }
176
177 # stop mysql
178 mysqlstop() {
179         clusterdir="$1"
180         mysqlstatus "$clusterdir"
181         msg_stopping "MySQL $clusterdir"
182         busy
183         [ "$MYSQL_PID" != "unknown" ] && kill -TERM "$MYSQL_PID" 2> /dev/null
184         # 3 seconds
185         for nr in 1 2 3; do
186                 [ -d "/proc/$MYSQL_PID" ] && sleep 1
187         done
188         mysqlstatus "$clusterdir"
189         if [ "$MYSQL_STATUS" = "died" ]; then
190                 died
191         elif [ "$MYSQL_STATUS" = "running" ]; then
192                 fail
193         else
194                 ok
195         fi
196         rm -f "$MYSQL_PIDFILE"
197 }
198
199 #
200 # check for running mysql instances; if any instance is running then
201 # create subsys lock file
202 #
203 mysqlsubsys() {
204         # check for every defined db cluster in sysconfig file
205         for mysqldir in $DB_CLUSTERS; do
206                 mysqlstatus "$mysqldir"
207                 if [ "$MYSQL_STATUS" = "running" ]; then
208                         touch /var/lock/subsys/mysql
209                         return
210                 fi
211         done
212         rm -f /var/lock/subsys/mysql
213 }
214
215 mysqlinit() {
216         clusterdir="$1"
217                 
218         if [ -f "$clusterdir/mysqld.conf" ]; then
219             mysqlgetconfig "$clusterdir"
220         else
221             MYSQL_USER="mysql"
222             MYSQL_CLUSTER_DIR="$clusterdir"
223             MYSQL_DATA_DIR="$clusterdir/db"
224             MYSQL_PIDFILE="$clusterdir/mysql.pid"
225             MYSQL_SOCKET="$clusterdir/mysql.sock"
226         fi
227
228         nls "Initializing cluster %s" "$clusterdir"
229
230         # Check if not exist init database
231         if [ -d "$MYSQL_DATA_DIR/mysql" ]; then
232                 nls "Seems that database is initialized now. Remove by hand %s" "$MYSQL_DATA_DIR/mysql"
233                 nls "before initializing database."
234                 nls "For now skipping cluster %s." "$clusterdir"
235                 return
236         fi
237
238         show "Creating privilege mysql tables for $MYSQL_DATA_DIR"
239         busy
240         TMP=/tmp TMPDIR=/tmp 
241
242                 
243         # Install this in the user table, too
244         hostname="`hostname --fqdn | tr -d '[:space:]'`"
245                 
246         # Check if hostname is valid
247         if [ -z "$hostname" ]; then
248                 deltext
249                 fail
250                 nls "Sorry, the host name is not configured."
251                 nls "Please configure the 'hostname' command to return a hostname."
252                 exit 1
253         elif ! hostname -i >/dev/null 2>&1; then 
254                 deltext
255                 fail
256                 nls "Sorry, the host '%s' could not be looked up." "$hostname"
257                 nls "Please configure the 'hostname' command to return a correct hostname."
258                 exit 1
259         fi
260
261         # Initialize variables
262         c_d="" i_d=""
263         c_h="" i_h=""
264         c_u="" i_u=""
265         c_f="" i_f=""
266         c_t="" c_c=""
267
268         # Check for old tables
269         if test ! -f $MYSQL_DATA_DIR/mysql/db.frm
270         then
271           # mysqld --bootstrap wants one command/line
272           c_d="$c_d CREATE TABLE db ("
273           c_d="$c_d   Host char(60) DEFAULT '' NOT NULL,"
274           c_d="$c_d   Db char(64) DEFAULT '' NOT NULL,"
275           c_d="$c_d   User char(16) DEFAULT '' NOT NULL,"
276           c_d="$c_d   Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
277           c_d="$c_d   Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
278           c_d="$c_d   Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
279           c_d="$c_d   Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
280           c_d="$c_d   Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
281           c_d="$c_d   Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
282           c_d="$c_d   Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
283           c_d="$c_d   References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
284           c_d="$c_d   Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
285           c_d="$c_d   Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
286           c_d="$c_d   Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
287           c_d="$c_d   Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
288           c_d="$c_d PRIMARY KEY Host (Host,Db,User),"
289           c_d="$c_d KEY User (User)"
290           c_d="$c_d )"
291           c_d="$c_d comment='Database privileges';"
292
293           i_d="INSERT INTO db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y');
294           INSERT INTO db VALUES ('%','test\_%','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y');"
295             
296         fi
297
298         if test ! -f $MYSQL_DATA_DIR/mysql/host.frm
299         then
300           c_h="$c_h CREATE TABLE host ("
301           c_h="$c_h  Host char(60) DEFAULT '' NOT NULL,"
302           c_h="$c_h  Db char(64) DEFAULT '' NOT NULL,"
303           c_h="$c_h  Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
304           c_h="$c_h  Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
305           c_h="$c_h  Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
306           c_h="$c_h  Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
307           c_h="$c_h  Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
308           c_h="$c_h  Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
309           c_h="$c_h  Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
310           c_h="$c_h  References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
311           c_h="$c_h  Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
312           c_h="$c_h  Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
313           c_h="$c_h  Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
314           c_h="$c_h  Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
315           c_h="$c_h  PRIMARY KEY Host (Host,Db)"
316           c_h="$c_h )"
317           c_h="$c_h comment='Host privileges;  Merged with database privileges';"
318         fi
319
320         if test ! -f $MYSQL_DATA_DIR/mysql/user.frm
321         then
322           c_u="$c_u CREATE TABLE user ("
323           c_u="$c_u   Host char(60) DEFAULT '' NOT NULL,"
324           c_u="$c_u   User char(16) DEFAULT '' NOT NULL,"
325           c_u="$c_u   Password char(16) DEFAULT '' NOT NULL,"
326           c_u="$c_u   Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
327           c_u="$c_u   Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
328           c_u="$c_u   Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
329           c_u="$c_u   Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
330           c_u="$c_u   Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
331           c_u="$c_u   Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
332           c_u="$c_u   Reload_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
333           c_u="$c_u   Shutdown_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
334           c_u="$c_u   Process_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
335           c_u="$c_u   File_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
336           c_u="$c_u   Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
337           c_u="$c_u   References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
338           c_u="$c_u   Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
339           c_u="$c_u   Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
340           c_u="$c_u   Show_db_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
341           c_u="$c_u   Super_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
342           c_u="$c_u   Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
343           c_u="$c_u   Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
344           c_u="$c_u   Execute_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
345           c_u="$c_u   Repl_slave_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
346           c_u="$c_u   Repl_client_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
347           c_u="$c_u   ssl_type enum('','ANY','X509', 'SPECIFIED') DEFAULT '' NOT NULL,"
348           c_u="$c_u   ssl_cipher BLOB NOT NULL,"
349           c_u="$c_u   x509_issuer BLOB NOT NULL,"
350           c_u="$c_u   x509_subject BLOB NOT NULL,"
351           c_u="$c_u   max_questions int(11) unsigned DEFAULT 0  NOT NULL,"
352           c_u="$c_u   max_updates int(11) unsigned DEFAULT 0  NOT NULL,"
353           c_u="$c_u   max_connections int(11) unsigned DEFAULT 0  NOT NULL,"
354           c_u="$c_u   PRIMARY KEY Host (Host,User)"
355           c_u="$c_u )"
356           c_u="$c_u comment='Users and global privileges';"
357
358           i_u="INSERT INTO user VALUES ('localhost','mysql','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0);
359           INSERT INTO user VALUES ('$hostname','mysql','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0);
360
361           REPLACE INTO user VALUES ('localhost','mysql','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0);
362           REPLACE INTO user VALUES ('$hostname','mysql','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0);
363
364           INSERT INTO user VALUES ('localhost','mysql_logrotate','','N','N','N','N','N','N','Y','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','',0,0,0);"
365         fi
366
367         if test ! -f $MYSQL_DATA_DIR/mysql/func.frm
368         then
369           c_f="$c_f CREATE TABLE func ("
370           c_f="$c_f   name char(64) DEFAULT '' NOT NULL,"
371           c_f="$c_f   ret tinyint(1) DEFAULT '0' NOT NULL,"
372           c_f="$c_f   dl char(128) DEFAULT '' NOT NULL,"
373           c_f="$c_f   type enum ('function','aggregate') NOT NULL,"
374           c_f="$c_f   PRIMARY KEY (name)"
375           c_f="$c_f )"
376           c_f="$c_f   comment='User defined functions';"
377         fi
378
379         if test ! -f $MYSQL_DATA_DIR/mysql/tables_priv.frm
380         then
381           c_t="$c_t CREATE TABLE tables_priv ("
382           c_t="$c_t   Host char(60) DEFAULT '' NOT NULL,"
383           c_t="$c_t   Db char(64) DEFAULT '' NOT NULL,"
384           c_t="$c_t   User char(16) DEFAULT '' NOT NULL,"
385           c_t="$c_t   Table_name char(60) DEFAULT '' NOT NULL,"
386           c_t="$c_t   Grantor char(77) DEFAULT '' NOT NULL,"
387           c_t="$c_t   Timestamp timestamp(14),"
388           c_t="$c_t   Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') DEFAULT '' NOT NULL,"
389           c_t="$c_t   Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL,"
390           c_t="$c_t   PRIMARY KEY (Host,Db,User,Table_name),"
391           c_t="$c_t   KEY Grantor (Grantor)"
392           c_t="$c_t )"
393           c_t="$c_t   comment='Table privileges';"
394         fi
395
396         if test ! -f $MYSQL_DATA_DIR/mysql/columns_priv.frm
397         then
398           c_c="$c_c CREATE TABLE columns_priv ("
399           c_c="$c_c   Host char(60) DEFAULT '' NOT NULL,"
400           c_c="$c_c   Db char(60) DEFAULT '' NOT NULL,"
401           c_c="$c_c   User char(16) DEFAULT '' NOT NULL,"
402           c_c="$c_c   Table_name char(60) DEFAULT '' NOT NULL,"
403           c_c="$c_c   Column_name char(60) DEFAULT '' NOT NULL,"
404           c_c="$c_c   Timestamp timestamp(14),"
405           c_c="$c_c   Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL,"
406           c_c="$c_c   PRIMARY KEY (Host,Db,User,Table_name,Column_name)"
407           c_c="$c_c )"
408           c_c="$c_c   comment='Column privileges';"
409         fi
410
411         mkdir -p "$MYSQL_DATA_DIR" > /dev/null 2>&1
412         chown mysql.mysql "$MYSQL_CLUSTER_DIR" "$MYSQL_DATA_DIR" > /dev/null 2>&1
413         chmod 750 "$MYSQL_CLUSTER_DIR"
414
415         if [ -f /usr/share/mysql/mysqld.conf -a ! -f "$MYSQL_CLUSTER_DIR/mysqld.conf" ]; then
416             sed -e "s#datadir.*=.*#datadir      = $MYSQL_DATA_DIR#g" \
417                 -e "s#pid-file.*=.*#pid-file = $MYSQL_PIDFILE#g" \
418                 -e "s#socket.*=.*#socket = $MYSQL_SOCKET#g" \
419                 /usr/share/mysql/mysqld.conf > "$MYSQL_CLUSTER_DIR/mysqld.conf"
420             chown root.root "$MYSQL_CLUSTER_DIR/mysqld.conf"
421             chmod 640 "$MYSQL_CLUSTER_DIR/mysqld.conf"
422         fi
423                 
424
425         if /usr/sbin/mysqld --bootstrap --skip-grant-tables \
426             --datadir=$MYSQL_DATA_DIR --user=$MYSQL_USER << END_OF_DATA
427 CREATE DATABASE mysql;
428 use mysql;
429 $c_d
430 $i_d
431
432 $c_h
433 $i_h
434
435 $c_u
436 $i_u
437
438 $c_f
439 $i_f
440
441 $c_t
442 $c_c
443 END_OF_DATA
444         then 
445             ok
446         cat << END_OF_MSG
447
448 PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL USERS!
449 This is done (after starting database) with:
450
451 /usr/bin/mysqladmin -u mysql -S $MYSQL_SOCKET password 'password'
452 /usr/bin/mysqladmin -h $hostname -u mysql -S $MYSQL_SOCKET password 'password'
453 /usr/bin/mysqladmin -u mysql_logrotate -S $MYSQL_SOCKET password 'password'
454
455 NOTE: mysql_logrotate password should be placed to $MYSQL_CONFIG in
456 mysqladmin section. See the manual for more instructions.
457
458 END_OF_MSG
459       else  
460             fail
461             cat << END_OF_MSG
462 Installation of grant tables FAILED!
463
464 Examine the logs in $MYSQL_DATA_DIR for more information.  You can
465 also try to start the mysqld demon with:
466
467 /usr/sbin/mysqld --skip-grant &
468
469 You can use the command line tool /usr/bin/mysql to connect to the mysql
470 database and look at the grant tables:
471
472 shell> /usr/bin/mysql -u mysql mysql
473 mysql> show tables
474
475 Try 'mysqld --help' if you have problems with paths. Setting on
476 logging in /etc/mysqld.conf gives you a log in /var/log/mysql/log that
477 may be helpful. The latest information about MySQL is available on the
478 web at http://www.mysql.com/.
479
480 Please check PLD ftp site for newer versions of this package.
481
482 Please consult the MySQL manual section: 'Problems running
483 mysql_install_db', and the manual section that describes problems on
484 your OS.  Another information source is the MySQL email archive.
485 Please check all of the above before mailing us!  And if you do mail
486 us, you MUST use the /usr/bin/mysqlbug script!  
487
488 END_OF_MSG
489
490         exit 1
491         fi
492 }
493
494 #
495 # End of useful functions.
496 #
497
498 RETVAL=0
499 case "$action" in
500   start)
501         if [ ! -f $MYSQL_ERRLOG ]; then
502                 touch $MYSQL_ERRLOG
503         fi
504         chown mysql.mysql $MYSQL_ERRLOG
505         chmod 640 $MYSQL_ERRLOG
506
507         for mysqldir in $DB_CLUSTERS; do
508                 mysqlstatus "$mysqldir"
509                 if [ "$MYSQL_STATUS" = "running" ]; then
510                         msg_already_running "MySQL $mysqldir"
511                 else
512                         mysqlstart "$mysqldir"
513                 fi
514         done
515         mysqlsubsys
516         ;;
517   stop)
518         for mysqldir in $DB_CLUSTERS; do
519                 mysqlstatus "$mysqldir"
520                 if [ "$MYSQL_STATUS" = "not running" ]; then
521                         msg_not_running "MySQL $mysqldir"
522                 else
523                         mysqlstop "$mysqldir"
524                 fi
525         done
526         mysqlsubsys
527         ;;
528   status)
529         for mysqldir in $DB_CLUSTERS; do
530                 mysqlstatus "$mysqldir"
531                 echo "MySQL cluster $mysqldir: $MYSQL_STATUS"
532         done
533         exit $?
534         ;;
535   restart|force-reload)
536         $0 stop
537         $0 start
538         exit $?
539         ;;
540   init)
541         for mysqldir in $DB_CLUSTERS; do
542                 mysqlinit "$mysqldir"
543         done
544         ;;
545   *)
546         msg_usage "$0 {start|stop|init|restart|force-reload|status}"
547         exit 3
548 esac
549
550 exit $RETVAL
This page took 0.094537 seconds and 4 git commands to generate.