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