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