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