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