]> git.pld-linux.org Git - packages/mysql.git/blob - mysql.init
- be nicer for not kind people like baggins who do nothing (now) and only complain
[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="not running"
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. Did you initialize DB by doing \`$0 init'?"
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
130         if is_yes "$MYSQL_NO_CLUSTER_COMPAT"; then
131                 MYSQL_DATA_DIR_SUB=""
132         else
133                 MYSQL_DATA_DIR_SUB="/mysqldb"
134         fi
135                 
136         if [ -z "$MYSQL_DATA_DIR" -o "$MYSQL_DATA_DIR" != "${clusterdir}${MYSQL_DATA_DIR_SUB}/db" ]; then
137                 nls "Error: datadir specified in %s should be %s" "$config_file" "$clusterdir${MYSQL_DATA_DIR_SUB}/db"
138                 nls " MySQL can't be run."
139                 exit 6
140         fi
141         
142         if [ -z "$MYSQL_PIDFILE" -o "$MYSQL_PIDFILE" != "$clusterdir${MYSQL_DATA_DIR_SUB}/mysql.pid" ]; then
143                 nls "Error: pid-file specified in %s should be %s" "$config_file" "$clusterdir${MYSQL_DATA_DIR_SUB}/mysql.pid"
144                 nls " MySQL can't be run."
145                 exit 6
146         fi
147
148         if [ -z $MYSQL_USER ]; then
149                 echo "$(nls 'MySQL user not configured properly')"'!' >&2
150                 nls "Edit %s and configure it." "$config_file" >&2
151                 exit 6
152         fi
153 }
154
155 # start mysql
156 mysqlstart() {
157         clusterdir="$1"
158         mysqlgetconfig "$clusterdir"
159         if [ ! -d "$MYSQL_DATA_DIR/mysql" ]; then
160                 nls "MySQL cluster %s not initialized." "$clusterdir"
161                 nls "Try \`%s init %s' before start." "$0" "$clusterdir"
162                 exit 6
163         fi
164
165         msg_starting "MySQL $clusterdir"
166         busy
167         [ -z "$DEFAULT_SERVICE_RUN_NICE_LEVEL" ] && DEFAULT_SERVICE_RUN_NICE_LEVEL=0
168         TMPDIR=/tmp nice -n ${SERVICE_RUN_NICE_LEVEL:-$DEFAULT_SERVICE_RUN_NICE_LEVEL} /usr/bin/setsid /usr/sbin/mysqld --defaults-file=$MYSQL_CONFIG --datadir=$MYSQL_DATA_DIR --pid-file=$MYSQL_PIDFILE >> $MYSQL_ERRLOG 2>&1 &
169         sleep 2
170         mysqlstatus "$clusterdir"
171         if [ "$MYSQL_STATUS" = "running" -a "$MYSQL_PID" != "unknown" ]; then
172                 ok
173         elif [ "$MYSQL_STATUS" = "died" ]; then
174                 RETVAL=1
175                 died
176         else
177                 RETVAL=1
178                 fail
179         fi
180 }
181
182 # stop mysql
183 mysqlstop() {
184         clusterdir="$1"
185         mysqlstatus "$clusterdir"
186         msg_stopping "MySQL $clusterdir"
187         busy
188         [ "$MYSQL_PID" != "unknown" ] && kill -TERM "$MYSQL_PID" 2> /dev/null
189         # 3 seconds
190         for nr in 1 2 3; do
191                 [ -d "/proc/$MYSQL_PID" ] && sleep 1
192         done
193         mysqlstatus "$clusterdir"
194         if [ "$MYSQL_STATUS" = "died" ]; then
195                 died
196         elif [ "$MYSQL_STATUS" = "running" ]; then
197                 fail
198         else
199                 ok
200         fi
201         rm -f "$MYSQL_PIDFILE"
202 }
203
204 #
205 # check for running mysql instances; if any instance is running then
206 # create subsys lock file
207 #
208 mysqlsubsys() {
209         # check for every defined db cluster in sysconfig file
210         for mysqldir in $DB_CLUSTERS; do
211                 mysqlstatus "$mysqldir"
212                 if [ "$MYSQL_STATUS" = "running" ]; then
213                         touch /var/lock/subsys/mysql
214                         return
215                 fi
216         done
217         rm -f /var/lock/subsys/mysql
218 }
219
220 mysqlinit() {
221         clusterdir="$1"
222
223         if [ -f /etc/mysqld.conf ]; then
224             nls "Running in \`no cluster compat' mode: can't initialize database."
225             nls "Move /etc/mysqld.conf away and rerun \`$0 init' (new config will be in $clusterdir)."
226             exit 1
227         fi
228
229         if [ -f "$clusterdir/mysqld.conf" ]; then
230             mysqlgetconfig "$clusterdir"
231         else
232             MYSQL_USER="mysql"
233             MYSQL_CLUSTER_DIR="$clusterdir"
234             MYSQL_DATA_DIR="$clusterdir/mysqldb/db"
235             MYSQL_PIDFILE="$clusterdir/mysqldb/mysql.pid"
236             MYSQL_SOCKET="$clusterdir/mysqldb/mysql.sock"
237         fi
238
239         nls "Initializing cluster %s" "$clusterdir"
240
241         # Check if not exist init database
242         if [ -d "$MYSQL_DATA_DIR/mysql" ]; then
243                 nls "Seems that database is initialized now. Remove by hand %s" "$MYSQL_DATA_DIR/mysqldb/mysql"
244                 nls "before initializing database."
245                 nls "For now skipping cluster %s." "$clusterdir"
246                 return
247         fi
248
249         show "Creating privilege mysql tables for $MYSQL_DATA_DIR"
250         busy
251         TMP=/tmp TMPDIR=/tmp 
252
253                 
254         # Install this in the user table, too
255         hostname="`hostname --fqdn 2> /dev/null | tr -d '[:space:]'`"
256         [ -z "$hostname" ] && hostname="localhost-unknown"
257                 
258         # Check if hostname is valid
259         if [ -z "$hostname" ]; then
260                 deltext
261                 fail
262                 nls "Sorry, the host name is not configured."
263                 nls "Please configure the 'hostname' command to return a hostname."
264                 exit 1
265         elif ! hostname -i >/dev/null 2>&1; then 
266                 deltext
267                 fail
268                 nls "Sorry, the host '%s' could not be looked up." "$hostname"
269                 nls "Please configure the 'hostname' command to return a correct hostname."
270                 exit 1
271         fi
272
273         # Initialize variables
274         c_d="" i_d=""
275         c_h="" i_h=""
276         c_u="" i_u=""
277         c_f="" i_f=""
278         c_t="" c_c=""
279
280         # Check for old tables
281         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/db.frm
282         then
283           # mysqld --bootstrap wants one command/line
284           c_d="$c_d CREATE TABLE db ("
285           c_d="$c_d   Host char(60) DEFAULT '' NOT NULL,"
286           c_d="$c_d   Db char(64) DEFAULT '' NOT NULL,"
287           c_d="$c_d   User char(16) DEFAULT '' NOT NULL,"
288           c_d="$c_d   Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
289           c_d="$c_d   Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
290           c_d="$c_d   Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
291           c_d="$c_d   Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
292           c_d="$c_d   Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
293           c_d="$c_d   Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
294           c_d="$c_d   Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
295           c_d="$c_d   References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
296           c_d="$c_d   Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
297           c_d="$c_d   Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
298           c_d="$c_d   Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
299           c_d="$c_d   Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
300           c_d="$c_d PRIMARY KEY Host (Host,Db,User),"
301           c_d="$c_d KEY User (User)"
302           c_d="$c_d )"
303           c_d="$c_d comment='Database privileges';"
304
305           i_d="INSERT INTO db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y');
306           INSERT INTO db VALUES ('%','test\_%','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y');"
307             
308         fi
309
310         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/host.frm
311         then
312           c_h="$c_h CREATE TABLE host ("
313           c_h="$c_h  Host char(60) DEFAULT '' NOT NULL,"
314           c_h="$c_h  Db char(64) DEFAULT '' NOT NULL,"
315           c_h="$c_h  Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
316           c_h="$c_h  Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
317           c_h="$c_h  Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
318           c_h="$c_h  Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
319           c_h="$c_h  Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
320           c_h="$c_h  Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
321           c_h="$c_h  Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
322           c_h="$c_h  References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
323           c_h="$c_h  Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
324           c_h="$c_h  Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
325           c_h="$c_h  Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
326           c_h="$c_h  Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
327           c_h="$c_h  PRIMARY KEY Host (Host,Db)"
328           c_h="$c_h )"
329           c_h="$c_h comment='Host privileges;  Merged with database privileges';"
330         fi
331
332         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/user.frm
333         then
334           c_u="$c_u CREATE TABLE user ("
335           c_u="$c_u   Host char(60) DEFAULT '' NOT NULL,"
336           c_u="$c_u   User char(16) DEFAULT '' NOT NULL,"
337           c_u="$c_u   Password char(16) DEFAULT '' NOT NULL,"
338           c_u="$c_u   Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
339           c_u="$c_u   Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
340           c_u="$c_u   Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
341           c_u="$c_u   Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
342           c_u="$c_u   Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
343           c_u="$c_u   Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
344           c_u="$c_u   Reload_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
345           c_u="$c_u   Shutdown_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
346           c_u="$c_u   Process_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
347           c_u="$c_u   File_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
348           c_u="$c_u   Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
349           c_u="$c_u   References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
350           c_u="$c_u   Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
351           c_u="$c_u   Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
352           c_u="$c_u   Show_db_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
353           c_u="$c_u   Super_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
354           c_u="$c_u   Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
355           c_u="$c_u   Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
356           c_u="$c_u   Execute_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
357           c_u="$c_u   Repl_slave_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
358           c_u="$c_u   Repl_client_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
359           c_u="$c_u   ssl_type enum('','ANY','X509', 'SPECIFIED') DEFAULT '' NOT NULL,"
360           c_u="$c_u   ssl_cipher BLOB NOT NULL,"
361           c_u="$c_u   x509_issuer BLOB NOT NULL,"
362           c_u="$c_u   x509_subject BLOB NOT NULL,"
363           c_u="$c_u   max_questions int(11) unsigned DEFAULT 0  NOT NULL,"
364           c_u="$c_u   max_updates int(11) unsigned DEFAULT 0  NOT NULL,"
365           c_u="$c_u   max_connections int(11) unsigned DEFAULT 0  NOT NULL,"
366           c_u="$c_u   PRIMARY KEY Host (Host,User)"
367           c_u="$c_u )"
368           c_u="$c_u comment='Users and global privileges';"
369
370           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);
371           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);
372
373           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);
374           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);
375
376           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);"
377         fi
378
379         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/func.frm
380         then
381           c_f="$c_f CREATE TABLE func ("
382           c_f="$c_f   name char(64) DEFAULT '' NOT NULL,"
383           c_f="$c_f   ret tinyint(1) DEFAULT '0' NOT NULL,"
384           c_f="$c_f   dl char(128) DEFAULT '' NOT NULL,"
385           c_f="$c_f   type enum ('function','aggregate') NOT NULL,"
386           c_f="$c_f   PRIMARY KEY (name)"
387           c_f="$c_f )"
388           c_f="$c_f   comment='User defined functions';"
389         fi
390
391         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/tables_priv.frm
392         then
393           c_t="$c_t CREATE TABLE tables_priv ("
394           c_t="$c_t   Host char(60) DEFAULT '' NOT NULL,"
395           c_t="$c_t   Db char(64) DEFAULT '' NOT NULL,"
396           c_t="$c_t   User char(16) DEFAULT '' NOT NULL,"
397           c_t="$c_t   Table_name char(60) DEFAULT '' NOT NULL,"
398           c_t="$c_t   Grantor char(77) DEFAULT '' NOT NULL,"
399           c_t="$c_t   Timestamp timestamp(14),"
400           c_t="$c_t   Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') DEFAULT '' NOT NULL,"
401           c_t="$c_t   Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL,"
402           c_t="$c_t   PRIMARY KEY (Host,Db,User,Table_name),"
403           c_t="$c_t   KEY Grantor (Grantor)"
404           c_t="$c_t )"
405           c_t="$c_t   comment='Table privileges';"
406         fi
407
408         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/columns_priv.frm
409         then
410           c_c="$c_c CREATE TABLE columns_priv ("
411           c_c="$c_c   Host char(60) DEFAULT '' NOT NULL,"
412           c_c="$c_c   Db char(60) DEFAULT '' NOT NULL,"
413           c_c="$c_c   User char(16) DEFAULT '' NOT NULL,"
414           c_c="$c_c   Table_name char(60) DEFAULT '' NOT NULL,"
415           c_c="$c_c   Column_name char(60) DEFAULT '' NOT NULL,"
416           c_c="$c_c   Timestamp timestamp(14),"
417           c_c="$c_c   Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL,"
418           c_c="$c_c   PRIMARY KEY (Host,Db,User,Table_name,Column_name)"
419           c_c="$c_c )"
420           c_c="$c_c   comment='Column privileges';"
421         fi
422
423         mkdir -p "$MYSQL_DATA_DIR" > /dev/null 2>&1
424         chown root:root "$MYSQL_CLUSTER_DIR"
425         chown mysql:mysql "$MYSQL_CLUSTER_DIR/mysqldb" "$MYSQL_DATA_DIR" > /dev/null 2>&1
426         chmod 751 "$MYSQL_CLUSTER_DIR" "$MYSQL_CLUSTER_DIR/mysqldb"
427
428         if [ -f /usr/share/mysql/mysqld.conf -a ! -f "$MYSQL_CLUSTER_DIR/mysqld.conf" ]; then
429             sed -e "s#datadir.*=.*#datadir      = $MYSQL_DATA_DIR#g" \
430                 -e "s#pid-file.*=.*#pid-file = $MYSQL_PIDFILE#g" \
431                 -e "s#socket.*=.*#socket = $MYSQL_SOCKET#g" \
432                 /usr/share/mysql/mysqld.conf > "$MYSQL_CLUSTER_DIR/mysqld.conf"
433             chown root:root "$MYSQL_CLUSTER_DIR/mysqld.conf"
434             chmod 640 "$MYSQL_CLUSTER_DIR/mysqld.conf"
435         fi
436                 
437
438         if /usr/sbin/mysqld --bootstrap --skip-grant-tables \
439             --datadir=$MYSQL_DATA_DIR --user=$MYSQL_USER << END_OF_DATA
440 CREATE DATABASE mysql;
441 use mysql;
442 $c_d
443 $i_d
444
445 $c_h
446 $i_h
447
448 $c_u
449 $i_u
450
451 $c_f
452 $i_f
453
454 $c_t
455 $c_c
456 END_OF_DATA
457         then 
458             ok
459         cat << END_OF_MSG
460
461 PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL USERS!
462 This is done (after starting database) with:
463
464 /usr/bin/mysqladmin -u mysql -S $MYSQL_SOCKET password 'password'
465 /usr/bin/mysqladmin -h $hostname -u mysql -S $MYSQL_SOCKET password 'password'
466 /usr/bin/mysqladmin -u mysql_logrotate -S $MYSQL_SOCKET password 'password'
467
468 NOTE: mysql_logrotate password should be placed to $MYSQL_CONFIG in
469 mysqladmin section. See the manual for more instructions.
470
471 IMPORTANT: The configuration file is mysqld.conf in MYSQ_DB_CLUSTERS directories.
472
473 END_OF_MSG
474       else  
475             fail
476             cat << END_OF_MSG
477 Installation of grant tables FAILED!
478
479 Examine the logs in $MYSQL_DATA_DIR for more information.  You can
480 also try to start the mysqld demon with:
481
482 /usr/sbin/mysqld --skip-grant &
483
484 You can use the command line tool /usr/bin/mysql to connect to the mysql
485 database and look at the grant tables:
486
487 shell> /usr/bin/mysql -u mysql mysql
488 mysql> show tables
489
490 Try 'mysqld --help' if you have problems with paths. Setting on
491 logging in /etc/mysqld.conf gives you a log in /var/log/mysql/log that
492 may be helpful. The latest information about MySQL is available on the
493 web at http://www.mysql.com/.
494
495 Please check PLD ftp site for newer versions of this package.
496
497 Please consult the MySQL manual section: 'Problems running
498 mysql_install_db', and the manual section that describes problems on
499 your OS.  Another information source is the MySQL email archive.
500 Please check all of the above before mailing us!  And if you do mail
501 us, you MUST use the /usr/bin/mysqlbug script!  
502
503 END_OF_MSG
504
505         exit 1
506         fi
507 }
508
509 #
510 # End of useful functions.
511 #
512
513 RETVAL=0
514 case "$action" in
515   start)
516         if [ ! -f $MYSQL_ERRLOG ]; then
517                 touch $MYSQL_ERRLOG
518         fi
519         chown mysql:mysql $MYSQL_ERRLOG
520         chmod 640 $MYSQL_ERRLOG
521
522         for mysqldir in $DB_CLUSTERS; do
523                 mysqlstatus "$mysqldir"
524                 if [ "$MYSQL_STATUS" = "running" ]; then
525                         msg_already_running "MySQL $mysqldir"
526                 else
527                         mysqlstart "$mysqldir"
528                 fi
529         done
530         mysqlsubsys
531         ;;
532   stop)
533         for mysqldir in $DB_CLUSTERS; do
534                 mysqlstatus "$mysqldir"
535                 if [ "$MYSQL_STATUS" = "not running" ]; then
536                         msg_not_running "MySQL $mysqldir"
537                 else
538                         mysqlstop "$mysqldir"
539                 fi
540         done
541         mysqlsubsys
542         ;;
543   status)
544         for mysqldir in $DB_CLUSTERS; do
545                 mysqlstatus "$mysqldir"
546                 echo "MySQL cluster $mysqldir: $MYSQL_STATUS"
547         done
548         exit $?
549         ;;
550   restart|force-reload)
551         $0 stop
552         $0 start
553         exit $?
554         ;;
555   init)
556         for mysqldir in $DB_CLUSTERS; do
557                 mysqlinit "$mysqldir"
558         done
559         ;;
560   flush-logs)
561         for mysqldir in $DB_CLUSTERS; do
562             mysqlgetconfig "$mysqldir"
563             /usr/bin/mysqladmin --defaults-file="$MYSQL_CONFIG" --socket="$MYSQL_SOCKET" flush-logs
564         done
565         exit $?
566         ;;
567   *)
568         msg_usage "$0 {start|stop|init|restart|force-reload|status}"
569         exit 3
570 esac
571
572 exit $RETVAL
This page took 0.077805 seconds and 4 git commands to generate.