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