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