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