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