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