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