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