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