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