]> git.pld-linux.org Git - packages/mysql.git/blob - mysql.init
- Info about moved mysqld.conf
[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 IMPORTANT: The configuration file is now located in /var/lib/mysq/mysqld.conf 
459
460 END_OF_MSG
461       else  
462             fail
463             cat << END_OF_MSG
464 Installation of grant tables FAILED!
465
466 Examine the logs in $MYSQL_DATA_DIR for more information.  You can
467 also try to start the mysqld demon with:
468
469 /usr/sbin/mysqld --skip-grant &
470
471 You can use the command line tool /usr/bin/mysql to connect to the mysql
472 database and look at the grant tables:
473
474 shell> /usr/bin/mysql -u mysql mysql
475 mysql> show tables
476
477 Try 'mysqld --help' if you have problems with paths. Setting on
478 logging in /etc/mysqld.conf gives you a log in /var/log/mysql/log that
479 may be helpful. The latest information about MySQL is available on the
480 web at http://www.mysql.com/.
481
482 Please check PLD ftp site for newer versions of this package.
483
484 Please consult the MySQL manual section: 'Problems running
485 mysql_install_db', and the manual section that describes problems on
486 your OS.  Another information source is the MySQL email archive.
487 Please check all of the above before mailing us!  And if you do mail
488 us, you MUST use the /usr/bin/mysqlbug script!  
489
490 END_OF_MSG
491
492         exit 1
493         fi
494 }
495
496 #
497 # End of useful functions.
498 #
499
500 RETVAL=0
501 case "$action" in
502   start)
503         if [ ! -f $MYSQL_ERRLOG ]; then
504                 touch $MYSQL_ERRLOG
505         fi
506         chown mysql.mysql $MYSQL_ERRLOG
507         chmod 640 $MYSQL_ERRLOG
508
509         for mysqldir in $DB_CLUSTERS; do
510                 mysqlstatus "$mysqldir"
511                 if [ "$MYSQL_STATUS" = "running" ]; then
512                         msg_already_running "MySQL $mysqldir"
513                 else
514                         mysqlstart "$mysqldir"
515                 fi
516         done
517         mysqlsubsys
518         ;;
519   stop)
520         for mysqldir in $DB_CLUSTERS; do
521                 mysqlstatus "$mysqldir"
522                 if [ "$MYSQL_STATUS" = "not running" ]; then
523                         msg_not_running "MySQL $mysqldir"
524                 else
525                         mysqlstop "$mysqldir"
526                 fi
527         done
528         mysqlsubsys
529         ;;
530   status)
531         for mysqldir in $DB_CLUSTERS; do
532                 mysqlstatus "$mysqldir"
533                 echo "MySQL cluster $mysqldir: $MYSQL_STATUS"
534         done
535         exit $?
536         ;;
537   restart|force-reload)
538         $0 stop
539         $0 start
540         exit $?
541         ;;
542   init)
543         for mysqldir in $DB_CLUSTERS; do
544                 mysqlinit "$mysqldir"
545         done
546         ;;
547   *)
548         msg_usage "$0 {start|stop|init|restart|force-reload|status}"
549         exit 3
550 esac
551
552 exit $RETVAL
This page took 0.109892 seconds and 4 git commands to generate.