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