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