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