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