]> git.pld-linux.org Git - packages/mysql.git/blob - mysql.init
- base tables need to be MyISAM
[packages/mysql.git] / mysql.init
1 #!/bin/sh
2 #
3 # mysql         A very fast and reliable SQL database engine
4 #
5 # chkconfig:    2345 84 25
6 #
7 # description:  A very fast and reliable SQL database engine.
8 #
9 # Source function library
10 . /etc/rc.d/init.d/functions
11
12 # Get network config
13 . /etc/sysconfig/network
14
15 # Get service config
16 if [ -f /etc/sysconfig/mysql ]; then
17         . /etc/sysconfig/mysql
18 else
19         nls "Error: %s not found" /etc/sysconfig/mysql
20         nls "%s can't be run." MySQL
21         exit 1
22 fi
23
24 [ -z "$BASE_TABLETYPE" ] && BASE_TABLETYPE="InnoDB"
25
26 if [ -n "$MYSQL_DB_CLUSTERS" ]; then
27         nls "Warning: MYSQL_DB_CLUSTERS is set. It's obsolete. Use %s instead." /etc/mysql/clusters.conf
28 fi
29
30 if [ -f /etc/mysql/clusters.conf ]; then
31         MYSQL_DB_CLUSTERS=$(awk -F= '!/^#/{print $2}' /etc/mysql/clusters.conf)
32         if [ -z "$MYSQL_DB_CLUSTERS"  ]; then
33                 nls "Warning: there are no configured clusters."
34         fi
35
36 else
37         nls "Warning: Missing clusters config file %s" /etc/mysql/clusters.conf
38         if [ -z "$MYSQL_DB_CLUSTERS"  ]; then
39                 nls "Warning: there are no configured clusters."
40                 nls "Using default cluster /var/lib/mysql (compatibility mode)"
41                 MYSQL_DB_CLUSTERS=/var/lib/mysql
42         fi
43 fi
44
45
46 # Check that networking is up
47 if is_yes "${NETWORKING}"; then
48         if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status -a "$1" != init ]; then
49                 msg_network_down MySQL
50                 exit 1
51         fi
52 else
53         exit 0
54 fi
55
56 action="$1"
57
58 # any db cluster as command line argument?
59 if [ $# -gt 1 ]; then
60         shift
61         # perform action for specified clusters only
62         DB_CLUSTERS="$@"
63 else
64         DB_CLUSTERS="$MYSQL_DB_CLUSTERS"
65 fi
66
67 MYSQL_ERRLOG=/var/log/mysql/err
68 MYSQL_START_WAIT_TIME=${MYSQL_START_WAIT_TIME:-15}
69 MYSQL_STOP_WAIT_TIME=${MYSQL_STOP_WAIT_TIME:-900}
70
71 #
72 # Useful functions.
73 #
74
75 #
76 # check for mysql status
77 #
78 # arguments:
79 # $1 - db cluster
80 # $2 - start|stop
81 #
82 # sets variables:
83 # MYSQL_STATUS = starting | running | not running | died
84 # MYSQL_PID    = pid of mysqld process
85 #
86 mysqlstatus() {
87         clusterdir="$1"
88         mode="$2"
89         
90         mysqlgetconfig "$clusterdir"
91
92         MYSQL_STATUS="not running"
93         MYSQL_PID="unknown"
94         MYSQL_PIDFILE_PID=""
95         MYSQL_GREP_PID=""
96
97         if [ -f "$MYSQL_PIDFILE" ]; then
98                 MYSQL_PIDFILE_PID=$(cat "$MYSQL_PIDFILE")
99         fi
100         
101         if [ -n "$MYSQL_PIDFILE_PID" ]; then
102                 MYSQL_PID=$MYSQL_PIDFILE_PID
103                 if [ ! -d "/proc/$MYSQL_PID" ]; then
104                         MYSQL_STATUS="died"
105                         return
106                 elif (grep -qa "$MYSQL_PIDFILE" /proc/$MYSQL_PID/cmdline 2> /dev/null); then
107                         MYSQL_STATUS="running"
108                         return
109                 fi
110         fi
111
112         if [ "$mode" = "start" ]; then
113                 MYSQL_GREP_PID=$(grep -lE "^/usr/sbin/mysqld.*${MYSQL_PIDFILE}" /proc/[0-9]*/cmdline 2> /dev/null | awk -F "/" '{ print $3; exit; }')
114                 if [ -n "$MYSQL_GREP_PID" ]; then
115                         MYSQL_PID=$MYSQL_GREP_PID
116                         if grep -qa "$MYSQL_PIDFILE" /proc/$MYSQL_PID/cmdline 2> /dev/null; then
117                                 if [ -f "$MYSQL_PIDFILE" ]; then
118                                         MYSQL_PIDFILE_PID=$(cat "$MYSQL_PIDFILE")
119                                 fi
120                                 if [ -n "$MYSQL_PIDFILE_PID" ]; then
121                                         MYSQL_PID=$MYSQL_PIDFILE_PID
122                                         MYSQL_STATUS="running"
123                                         return
124                                 else
125                                         MYSQL_STATUS="starting"
126                                         return
127                                 fi
128                         fi
129                 fi
130         fi
131
132         # else default, "not running"
133 }
134
135 # get mysql configuration in variables
136 # MYSQL_CONFIG MYSQL_DATA_DIR MYSQL_USER MYSQL_PIDFILE
137 #
138 # arguments
139 # $1 - db cluster
140
141 mysqlgetconfig() {
142         clusterdir="$1"
143
144         # emulate old behaviour if only one cluster specified
145         if [ "$clusterdir" = "$MYSQL_DB_CLUSTERS" -a "$clusterdir" = "/var/lib/mysql" -a -f /etc/mysqld.conf ]; then
146                 MYSQL_RA_COMPAT=yes
147                 config_file=/etc/mysqld.conf
148         else
149                 config=$(awk -F= -vclusterdir="$clusterdir" '!/^#/{ if (clusterdir == $2) print $1}' /etc/mysql/clusters.conf)
150                 if [[ $config = /* ]]; then
151                         config_file="$config"
152                 elif [ -f "/etc/mysql/$config" ]; then
153                         config_file="/etc/mysql/$config"
154                 else
155                         config_file="$clusterdir/mysqld.conf"
156                 fi
157         fi
158
159         MYSQL_CLUSTER_DIR="$clusterdir"
160
161         if [ -z "$config_file" ]; then
162                 nls "Error: Can't find config file for %s cluster" "$clusterdir"
163                 exit 6
164         else
165                 MYSQL_CONFIG="$config_file"
166         fi
167
168         if [ ! -f "$config_file" ]; then
169                 nls "Error: config file %s not found" "$config_file"
170                 nls "MySQL can't be run. Did you initialize DB by doing \`$0 init'?"
171                 exit 6
172         fi
173
174         eval `awk '
175 /^[ \t]*\[.*\][ \t]*$/ {
176         match($0,/\[.*\]/)
177         section=substr($0, RSTART + 1, RSTART + RLENGTH - 3)
178 }
179 section == "mysqld" && $2 ~ "=" {
180         if ($1 == "datadir") {
181                 printf("MYSQL_DATA_DIR=%s;", $3)
182         } else if ($1 == "user") {
183                 printf("MYSQL_USER=%s;", $3)
184         } else if ($1 == "pid-file") {
185                 printf("MYSQL_PIDFILE=%s;", $3)
186         } else if ($1 == "socket") {
187                 printf("MYSQL_SOCKET=%s;", $3)
188         }
189 }
190 ' $config_file`
191
192
193         if is_yes "$MYSQL_RA_COMPAT"; then
194                 MYSQL_DATA_DIR_SUB=""
195         else
196                 MYSQL_DATA_DIR_SUB="/mysqldb"
197         fi
198
199         if [ -z "$MYSQL_DATA_DIR" -o "$MYSQL_DATA_DIR" != "${clusterdir}${MYSQL_DATA_DIR_SUB}/db" ]; then
200                 nls "Error: datadir specified in %s should be %s" "$config_file" "$clusterdir${MYSQL_DATA_DIR_SUB}/db"
201                 nls " MySQL can't be run."
202                 exit 6
203         fi
204
205         if [ -z "$MYSQL_PIDFILE" -o "$MYSQL_PIDFILE" != "$clusterdir${MYSQL_DATA_DIR_SUB}/mysql.pid" ]; then
206                 nls "Error: pid-file specified in %s should be %s" "$config_file" "$clusterdir${MYSQL_DATA_DIR_SUB}/mysql.pid"
207                 nls " MySQL can't be run."
208                 exit 6
209         fi
210
211         if [ -z $MYSQL_USER ]; then
212                 echo "$(nls 'MySQL user not configured properly')"'!' >&2
213                 nls "Edit %s and configure it." "$config_file" >&2
214                 exit 6
215         fi
216 }
217
218 # start mysql
219 mysqlstart() {
220         clusterdir="$1"
221         mysqlgetconfig "$clusterdir"
222         if [ ! -d "$MYSQL_DATA_DIR/mysql" ]; then
223                 nls "MySQL cluster %s not initialized." "$clusterdir"
224                 nls "Try \`%s init %s' before start." "$0" "$clusterdir"
225                 exit 6
226         fi
227
228         msg_starting "MySQL $clusterdir"
229         busy
230         [ -z "$DEFAULT_SERVICE_RUN_NICE_LEVEL" ] && DEFAULT_SERVICE_RUN_NICE_LEVEL=0
231         rm -f "$MYSQL_PIDFILE"
232         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_OPTIONS >> $MYSQL_ERRLOG 2>&1 &
233         sleep 0.2
234         mysqlstatus "$clusterdir" start
235         # it takes longer for mysqld to start and create pidfile if it has to recover innodb transactions
236         if [ "$MYSQL_STATUS" = "starting" ]; then
237                 for nr in $(seq 1 $(($MYSQL_START_WAIT_TIME*10))); do
238                         [ -f "$MYSQL_PIDFILE" ] && break
239                         sleep 0.1
240                 done
241         fi
242
243         mysqlstatus "$clusterdir" start
244         if [ "$MYSQL_STATUS" = "running" -a "$MYSQL_PID" != "unknown" ]; then
245                 ok
246         elif [ "$MYSQL_STATUS" = "died" ]; then
247                 RETVAL=1
248                 died
249         else
250                 RETVAL=1
251                 fail
252         fi
253 }
254
255 # stop mysql
256 mysqlstop() {
257         clusterdir="$1"
258         mysqlstatus "$clusterdir" stop
259         msg_stopping "MySQL $clusterdir"
260         busy
261
262         # try graceful shutdown -- send shutdown command
263         # requires mysql_logrotate user proper privs
264         /usr/bin/mysqladmin --defaults-file=$MYSQL_CONFIG ${MYSQL_SOCKET:+--socket=$MYSQL_SOCKET} shutdown >/dev/null 2>&1
265         mysqlstatus "$clusterdir" stop
266
267         if [ "$MYSQL_PID" != "unknown" ]; then
268                 kill -TERM "$MYSQL_PID" 2> /dev/null
269                 for nr in $(seq 1 $(($MYSQL_STOP_WAIT_TIME*10))); do
270                         [ -d "/proc/$MYSQL_PID" ] || break
271                         sleep 0.1
272                 done
273         fi
274         
275         mysqlstatus "$clusterdir" stop
276         if [ "$MYSQL_STATUS" = "died" ]; then
277                 died
278         elif [ "$MYSQL_STATUS" = "running" -o "$MYSQL_STATUS" = "starting" ]; then
279                 fail
280         else
281                 ok
282         fi
283 }
284
285 #
286 # check for running mysql instances; if any instance is running then
287 # create subsys lock file
288 #
289 mysqlsubsys() {
290         # check for every defined db cluster in sysconfig file
291         for mysqldir in $DB_CLUSTERS; do
292                 mysqlstatus "$mysqldir"
293                 if [ "$MYSQL_STATUS" = "running" ]; then
294                         touch /var/lock/subsys/mysql
295                         return
296                 fi
297         done
298         rm -f /var/lock/subsys/mysql
299 }
300
301 mysqlinit() {
302         clusterdir="$1"
303
304         if [ -f /etc/mysqld.conf ]; then
305                 nls "Running in \`no cluster compat' mode: can't initialize database."
306                 nls "Move /etc/mysqld.conf away and rerun \`$0 init' (new config will be in $clusterdir)."
307                 exit 1
308         fi
309
310         if [ -f "$clusterdir/mysqld.conf" ]; then
311                 mysqlgetconfig "$clusterdir"
312         else
313                 MYSQL_USER="mysql"
314                 MYSQL_CLUSTER_DIR="$clusterdir"
315                 MYSQL_DATA_DIR="$clusterdir/mysqldb/db"
316                 MYSQL_PIDFILE="$clusterdir/mysqldb/mysql.pid"
317                 MYSQL_SOCKET="$clusterdir/mysqldb/mysql.sock"
318
319                 # this $MYSQL_CONFIG will be created later
320                 MYSQL_CONFIG="$MYSQL_CLUSTER_DIR/mysqld.conf"
321         fi
322
323         nls "Initializing cluster %s" "$clusterdir"
324
325         # Check if not exist init database
326         if [ -d "$MYSQL_DATA_DIR/mysql" ]; then
327                 nls "Seems that database is initialized now. Remove by hand %s" "$MYSQL_DATA_DIR/mysql"
328                 nls "before initializing database."
329                 nls "For now skipping cluster %s." "$clusterdir"
330                 return
331         fi
332
333         show "Creating privilege mysql tables for $MYSQL_DATA_DIR"
334         busy
335         TMP=/tmp TMPDIR=/tmp
336
337         # Install this in the user table, too
338         hostname="`hostname --fqdn 2> /dev/null | tr -d '[:space:]'`"
339         [ -z "$hostname" ] && hostname="localhost-unknown"
340
341         # Check if hostname is valid
342         if [ -z "$hostname" ]; then
343                 deltext
344                 fail
345                 nls "Sorry, the host name is not configured."
346                 nls "Please configure the 'hostname' command to return a hostname."
347                 exit 1
348         elif ! hostname -i >/dev/null 2>&1; then
349                 deltext
350                 fail
351                 nls "Sorry, the host '%s' could not be looked up." "$hostname"
352                 nls "Please configure the 'hostname' command to return a correct hostname."
353                 exit 1
354         fi
355
356         # Initialize variables
357         c_d="" i_d="" c_ht=""  c_tz=""
358         c_h="" i_h="" c_hc=""  c_tzt=""
359         c_u="" i_u="" c_hk=""  c_tztt=""
360         c_f="" i_f="" c_hr=""  c_tzls=""
361         c_t="" c_c="" c_tzn="" c_p=""
362         c_pp=""
363
364         # Check for old tables
365         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/db.frm
366         then
367           # mysqld --bootstrap wants one command/line
368           c_d="$c_d CREATE TABLE db ("
369           c_d="$c_d   Host char(60) DEFAULT '' NOT NULL,"
370           c_d="$c_d   Db char(64) DEFAULT '' NOT NULL,"
371           c_d="$c_d   User char(16) DEFAULT '' NOT NULL,"
372           c_d="$c_d   Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
373           c_d="$c_d   Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
374           c_d="$c_d   Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
375           c_d="$c_d   Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
376           c_d="$c_d   Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
377           c_d="$c_d   Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
378           c_d="$c_d   Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
379           c_d="$c_d   References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
380           c_d="$c_d   Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
381           c_d="$c_d   Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
382           c_d="$c_d   Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
383           c_d="$c_d   Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
384           c_d="$c_d   Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
385           c_d="$c_d   Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
386           c_d="$c_d   Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
387           c_d="$c_d   Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
388           c_d="$c_d   Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
389           c_d="$c_d PRIMARY KEY Host (Host,Db,User),"
390           c_d="$c_d KEY User (User)"
391           c_d="$c_d ) engine=MyISAM "
392           c_d="$c_d CHARACTER SET utf8 COLLATE utf8_bin"
393           c_d="$c_d comment='Database privileges';"
394
395           i_d="INSERT INTO db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','N','N');
396           INSERT INTO db VALUES ('%','test\_%','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','N','N');"
397
398         fi
399
400         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/host.frm
401         then
402           c_h="$c_h CREATE TABLE host ("
403           c_h="$c_h  Host char(60) DEFAULT '' NOT NULL,"
404           c_h="$c_h  Db char(64) DEFAULT '' NOT NULL,"
405           c_h="$c_h  Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
406           c_h="$c_h  Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
407           c_h="$c_h  Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
408           c_h="$c_h  Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
409           c_h="$c_h  Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
410           c_h="$c_h  Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
411           c_h="$c_h  Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
412           c_h="$c_h  References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
413           c_h="$c_h  Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
414           c_h="$c_h  Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
415           c_h="$c_h  Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
416           c_h="$c_h  Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
417           c_h="$c_h  Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
418           c_h="$c_h  Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
419           c_h="$c_h  Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
420           c_h="$c_h  Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
421           c_h="$c_h  Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
422           c_h="$c_h  PRIMARY KEY Host (Host,Db)"
423           c_h="$c_h ) engine=MyISAM "
424           c_h="$c_h CHARACTER SET utf8 COLLATE utf8_bin"
425           c_h="$c_h comment='Host privileges;  Merged with database privileges';"
426         fi
427
428         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/user.frm
429         then
430           c_u="$c_u CREATE TABLE user ("
431           c_u="$c_u   Host char(60) binary DEFAULT '' NOT NULL,"
432           c_u="$c_u   User char(16) binary DEFAULT '' NOT NULL,"
433           c_u="$c_u   Password char(41) character set latin1 collate latin1_bin DEFAULT '' NOT NULL,"
434           c_u="$c_u   Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
435           c_u="$c_u   Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
436           c_u="$c_u   Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
437           c_u="$c_u   Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
438           c_u="$c_u   Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
439           c_u="$c_u   Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
440           c_u="$c_u   Reload_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
441           c_u="$c_u   Shutdown_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
442           c_u="$c_u   Process_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
443           c_u="$c_u   File_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
444           c_u="$c_u   Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
445           c_u="$c_u   References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
446           c_u="$c_u   Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
447           c_u="$c_u   Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
448           c_u="$c_u   Show_db_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
449           c_u="$c_u   Super_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
450           c_u="$c_u   Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
451           c_u="$c_u   Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
452           c_u="$c_u   Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
453           c_u="$c_u   Repl_slave_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
454           c_u="$c_u   Repl_client_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
455           c_u="$c_u   Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
456           c_u="$c_u   Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
457           c_u="$c_u   Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
458           c_u="$c_u   Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
459           c_u="$c_u   Create_user_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,"
460           c_u="$c_u   ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
461           c_u="$c_u   ssl_cipher BLOB NOT NULL,"
462           c_u="$c_u   x509_issuer BLOB NOT NULL,"
463           c_u="$c_u   x509_subject BLOB NOT NULL,"
464           c_u="$c_u   max_questions int(11) unsigned DEFAULT 0  NOT NULL,"
465           c_u="$c_u   max_updates int(11) unsigned DEFAULT 0  NOT NULL,"
466           c_u="$c_u   max_connections int(11) unsigned DEFAULT 0  NOT NULL,"
467           c_u="$c_u   max_user_connections int(11) unsigned DEFAULT 0  NOT NULL,"
468           c_u="$c_u   PRIMARY KEY Host (Host,User)"
469           c_u="$c_u ) engine=MyISAM "
470           c_u="$c_u CHARACTER SET utf8 COLLATE utf8_bin"
471           c_u="$c_u comment='Users and global privileges';"
472
473
474           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','Y','Y','Y','Y','Y','','','','',0,0,0,0);
475           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','Y','Y','Y','Y','Y','','','','',0,0,0,0);
476           INSERT INTO user (host,user) values ('localhost','');
477           INSERT INTO user (host,user) values ('$hostname','');
478           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','N','N','N','N','N','','','','',0,0,0,0);"
479         fi
480
481         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/func.frm
482         then
483           c_f="$c_f CREATE TABLE func ("
484           c_f="$c_f   name char(64) DEFAULT '' NOT NULL,"
485           c_f="$c_f   ret tinyint(1) DEFAULT '0' NOT NULL,"
486           c_f="$c_f   dl char(128) DEFAULT '' NOT NULL,"
487           c_f="$c_f   type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL,"
488           c_f="$c_f   PRIMARY KEY (name)"
489           c_f="$c_f ) engine=${BASE_TABLETYPE} "
490           c_f="$c_f CHARACTER SET utf8 COLLATE utf8_bin"
491           c_f="$c_f comment='User defined functions';"
492         fi
493
494         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/tables_priv.frm
495         then
496           c_t="$c_t CREATE TABLE tables_priv ("
497           c_t="$c_t   Host char(60) DEFAULT '' NOT NULL,"
498           c_t="$c_t   Db char(64) DEFAULT '' NOT NULL,"
499           c_t="$c_t   User char(16) DEFAULT '' NOT NULL,"
500           c_t="$c_t   Table_name char(60) DEFAULT '' NOT NULL,"
501           c_t="$c_t   Grantor char(77) DEFAULT '' NOT NULL,"
502           c_t="$c_t   Timestamp timestamp(14),"
503           c_t="$c_t   Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index', 'Alter','Create View','Show view') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
504           c_t="$c_t   Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
505           c_t="$c_t   PRIMARY KEY (Host,Db,User,Table_name),"
506           c_t="$c_t   KEY Grantor (Grantor)"
507           c_t="$c_t ) engine=${BASE_TABLETYPE} "
508           c_t="$c_t CHARACTER SET utf8 COLLATE utf8_bin"
509           c_t="$c_t comment='Table privileges';"
510         fi
511
512         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/columns_priv.frm
513         then
514           c_c="$c_c CREATE TABLE columns_priv ("
515           c_c="$c_c   Host char(60) DEFAULT '' NOT NULL,"
516           c_c="$c_c   Db char(64) DEFAULT '' NOT NULL,"
517           c_c="$c_c   User char(16) DEFAULT '' NOT NULL,"
518           c_c="$c_c   Table_name char(64) DEFAULT '' NOT NULL,"
519           c_c="$c_c   Column_name char(64) DEFAULT '' NOT NULL,"
520           c_c="$c_c   Timestamp timestamp(14),"
521           c_c="$c_c   Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
522           c_c="$c_c   PRIMARY KEY (Host,Db,User,Table_name,Column_name)"
523           c_c="$c_c ) engine=${BASE_TABLETYPE} "
524           c_c="$c_c CHARACTER SET utf8 COLLATE utf8_bin"
525           c_c="$c_c comment='Column privileges';"
526         fi
527
528         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/procs_priv.frm
529         then
530       c_pp="$c_pp CREATE TABLE procs_priv ("
531           c_pp="$c_pp   Host char(60) binary DEFAULT '' NOT NULL,"
532           c_pp="$c_pp   Db char(64) binary DEFAULT '' NOT NULL,"
533           c_pp="$c_pp   User char(16) binary DEFAULT '' NOT NULL,"
534           c_pp="$c_pp   Routine_name char(64) binary DEFAULT '' NOT NULL,"
535           c_pp="$c_pp   Routine_type enum('FUNCTION','PROCEDURE') NOT NULL,"
536           c_pp="$c_pp   Grantor char(77) DEFAULT '' NOT NULL,"
537           c_pp="$c_pp   Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
538           c_pp="$c_pp   Timestamp timestamp(14),"
539           c_pp="$c_pp   PRIMARY KEY (Host,Db,User,Routine_name,Routine_type),"
540           c_pp="$c_pp   KEY Grantor (Grantor)"
541           c_pp="$c_pp ) engine=${BASE_TABLETYPE} "
542           c_pp="$c_pp CHARACTER SET utf8 COLLATE utf8_bin"
543           c_pp="$c_pp   comment='Procedure privileges';"
544     fi
545
546
547         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/help_topic.frm
548         then
549           c_ht="$c_ht CREATE TABLE help_topic ("
550           c_ht="$c_ht   help_topic_id    int unsigned not null,"
551           c_ht="$c_ht   name             varchar(64) not null,"
552       c_ht="$c_ht   help_category_id smallint unsigned not null,"
553           c_ht="$c_ht   description      text not null,"
554           c_ht="$c_ht   example          text not null,"
555           c_ht="$c_ht   url              varchar(128) not null,"
556           c_ht="$c_ht   primary key      (help_topic_id),"
557           c_ht="$c_ht   unique index     (name)"
558           c_ht="$c_ht ) engine=${BASE_TABLETYPE} "
559           c_ht="$c_ht CHARACTER SET utf8"
560           c_ht="$c_ht comment='help topics';"
561         fi
562
563         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/help_category.frm
564         then
565           c_hc="$c_hc CREATE TABLE help_category ("
566           c_hc="$c_hc   help_category_id   smallint unsigned not null,"
567           c_hc="$c_hc   name               varchar(64) not null,"
568           c_hc="$c_hc   parent_category_id smallint unsigned null,"
569           c_hc="$c_hc   url                varchar(128) not null,"
570           c_hc="$c_hc   primary key        (help_category_id),"
571           c_hc="$c_hc   unique index       (name)"
572           c_hc="$c_hc ) engine=${BASE_TABLETYPE} "
573           c_hc="$c_hc   CHARACTER SET utf8"
574           c_hc="$c_hc comment='help categories';"
575         fi
576
577         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/help_keyword.frm
578         then
579           c_hk="$c_hk CREATE TABLE help_keyword ("
580           c_hk="$c_hk   help_keyword_id  int unsigned not null,"
581           c_hk="$c_hk   name             varchar(64) not null,"
582           c_hk="$c_hk   primary key      (help_keyword_id),"
583           c_hk="$c_hk   unique index     (name)"
584           c_hk="$c_hk ) engine=${BASE_TABLETYPE} "
585           c_hk="$c_hk   CHARACTER SET utf8"
586           c_hk="$c_hk comment='help keywords';"
587         fi
588
589         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/help_relation.frm
590         then
591           c_hr="$c_hr CREATE TABLE help_relation ("
592           c_hr="$c_hr   help_topic_id    int unsigned not null references help_topic,"
593           c_hr="$c_hr   help_keyword_id  int unsigned not null references help_keyword,"
594           c_hr="$c_hr   primary key      (help_keyword_id, help_topic_id)"
595           c_hr="$c_hr ) engine=${BASE_TABLETYPE} "
596           c_hr="$c_hr   CHARACTER SET utf8"
597           c_hr="$c_hr comment='keyword-topic relation';"
598         fi
599
600         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/time_zone_name.frm
601         then
602           c_tzn="$c_tzn CREATE TABLE time_zone_name ("
603           c_tzn="$c_tzn   Name char(64) NOT NULL,"
604           c_tzn="$c_tzn   Time_zone_id int unsigned NOT NULL,"
605           c_tzn="$c_tzn   PRIMARY KEY Name (Name)"
606           c_tzn="$c_tzn ) engine=${BASE_TABLETYPE} "
607           c_tzn="$c_tzn   CHARACTER SET utf8"
608           c_tzn="$c_tzn comment='Time zone names';"
609         fi
610
611         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/time_zone.frm
612         then
613           c_tz="$c_tz CREATE TABLE time_zone ("
614           c_tz="$c_tz   Time_zone_id int unsigned NOT NULL auto_increment,"
615           c_tz="$c_tz   Use_leap_seconds enum('Y','N') DEFAULT 'N' NOT NULL,"
616           c_tz="$c_tz   PRIMARY KEY TzId (Time_zone_id)"
617           c_tz="$c_tz ) engine=${BASE_TABLETYPE} "
618           c_tz="$c_tz   CHARACTER SET utf8"
619           c_tz="$c_tz comment='Time zones';"
620         fi
621
622         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/time_zone_transition.frm
623         then
624           c_tzt="$c_tzt CREATE TABLE time_zone_transition ("
625           c_tzt="$c_tzt   Time_zone_id int unsigned NOT NULL,"
626           c_tzt="$c_tzt   Transition_time bigint signed NOT NULL,"
627           c_tzt="$c_tzt   Transition_type_id int unsigned NOT NULL,"
628           c_tzt="$c_tzt   PRIMARY KEY TzIdTranTime (Time_zone_id, Transition_time)"
629           c_tzt="$c_tzt ) engine=${BASE_TABLETYPE} "
630           c_tzt="$c_tzt   CHARACTER SET utf8"
631           c_tzt="$c_tzt comment='Time zone transitions';"
632         fi
633
634         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/time_zone_transition_type.frm
635         then
636           c_tztt="$c_tztt CREATE TABLE time_zone_transition_type ("
637           c_tztt="$c_tztt   Time_zone_id int unsigned NOT NULL,"
638           c_tztt="$c_tztt   Transition_type_id int unsigned NOT NULL,"
639           c_tztt="$c_tztt   Offset int signed DEFAULT 0 NOT NULL,"
640           c_tztt="$c_tztt   Is_DST tinyint unsigned DEFAULT 0 NOT NULL,"
641           c_tztt="$c_tztt   Abbreviation char(8) DEFAULT '' NOT NULL,"
642           c_tztt="$c_tztt   PRIMARY KEY TzIdTrTId (Time_zone_id, Transition_type_id)"
643           c_tztt="$c_tztt ) engine=${BASE_TABLETYPE} "
644           c_tztt="$c_tztt   CHARACTER SET utf8"
645           c_tztt="$c_tztt comment='Time zone transition types';"
646         fi
647
648         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/time_zone_leap_second.frm
649         then
650           c_tzls="$c_tzls CREATE TABLE time_zone_leap_second ("
651           c_tzls="$c_tzls   Transition_time bigint signed NOT NULL,"
652           c_tzls="$c_tzls   Correction int signed NOT NULL,"
653           c_tzls="$c_tzls   PRIMARY KEY TranTime (Transition_time)"
654           c_tzls="$c_tzls ) engine=${BASE_TABLETYPE} "
655           c_tzls="$c_tzls CHARACTER SET utf8"
656           c_tzls="$c_tzls   comment='Leap seconds information for time zones';"
657         fi
658
659         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/proc.frm
660         then
661           c_p="$c_p CREATE TABLE proc ("
662           c_p="$c_p   db                char(64) collate utf8_bin DEFAULT '' NOT NULL,"
663           c_p="$c_p   name              char(64) DEFAULT '' NOT NULL,"
664           c_p="$c_p   type              enum('FUNCTION','PROCEDURE') NOT NULL,"
665           c_p="$c_p   specific_name     char(64) DEFAULT '' NOT NULL,"
666           c_p="$c_p   language          enum('SQL') DEFAULT 'SQL' NOT NULL,"
667           c_p="$c_p   sql_data_access   enum('CONTAINS_SQL',"
668           c_p="$c_p                          'NO_SQL',"
669           c_p="$c_p                          'READS_SQL_DATA',"
670           c_p="$c_p                          'MODIFIES_SQL_DATA'"
671           c_p="$c_p                     ) DEFAULT 'CONTAINS_SQL' NOT NULL,"
672           c_p="$c_p   is_deterministic  enum('YES','NO') DEFAULT 'NO' NOT NULL,"
673           c_p="$c_p   security_type     enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL,"
674           c_p="$c_p   param_list        blob DEFAULT '' NOT NULL,"
675           c_p="$c_p   returns           char(64) DEFAULT '' NOT NULL,"
676           c_p="$c_p   body              longblob DEFAULT '' NOT NULL,"
677           c_p="$c_p   definer           char(77) collate utf8_bin DEFAULT '' NOT NULL,"
678           c_p="$c_p   created           timestamp,"
679           c_p="$c_p   modified          timestamp,"
680           c_p="$c_p   sql_mode          set("
681           c_p="$c_p                         'REAL_AS_FLOAT',"
682           c_p="$c_p                         'PIPES_AS_CONCAT',"
683           c_p="$c_p                         'ANSI_QUOTES',"
684           c_p="$c_p                         'IGNORE_SPACE',"
685           c_p="$c_p                         'NOT_USED',"
686           c_p="$c_p                         'ONLY_FULL_GROUP_BY',"
687           c_p="$c_p                         'NO_UNSIGNED_SUBTRACTION',"
688           c_p="$c_p                         'NO_DIR_IN_CREATE',"
689           c_p="$c_p                         'POSTGRESQL',"
690           c_p="$c_p                         'ORACLE',"
691           c_p="$c_p                         'MSSQL',"
692           c_p="$c_p                         'DB2',"
693           c_p="$c_p                         'MAXDB',"
694           c_p="$c_p                         'NO_KEY_OPTIONS',"
695           c_p="$c_p                         'NO_TABLE_OPTIONS',"
696           c_p="$c_p                         'NO_FIELD_OPTIONS',"
697           c_p="$c_p                         'MYSQL323',"
698           c_p="$c_p                         'MYSQL40',"
699           c_p="$c_p                         'ANSI',"
700           c_p="$c_p                         'NO_AUTO_VALUE_ON_ZERO',"
701           c_p="$c_p                         'NO_BACKSLASH_ESCAPES',"
702           c_p="$c_p                         'STRICT_TRANS_TABLES',"
703           c_p="$c_p                         'STRICT_ALL_TABLES',"
704           c_p="$c_p                         'NO_ZERO_IN_DATE',"
705           c_p="$c_p                         'NO_ZERO_DATE',"
706           c_p="$c_p                         'INVALID_DATES',"
707           c_p="$c_p                         'ERROR_FOR_DIVISION_BY_ZERO',"
708           c_p="$c_p                         'TRADITIONAL',"
709           c_p="$c_p                         'NO_AUTO_CREATE_USER',"
710           c_p="$c_p                         'HIGH_NOT_PRECEDENCE'"
711           c_p="$c_p                     ) DEFAULT '' NOT NULL,"
712           c_p="$c_p   comment           char(64) collate utf8_bin DEFAULT '' NOT NULL,"
713           c_p="$c_p   PRIMARY KEY (db,name,type)"
714           c_p="$c_p ) engine=${BASE_TABLETYPE} "
715           c_p="$c_p character set utf8"
716           c_p="$c_p comment='Stored Procedures';"
717         fi
718
719         mkdir -p "$MYSQL_DATA_DIR" > /dev/null 2>&1
720         # Using mysql:mysql for MYSQL_CLUSTER_DIR is creating SECURITY hole, root:root is proper
721         chown root:root "$MYSQL_CLUSTER_DIR"
722     chown mysql:mysql "$MYSQL_CLUSTER_DIR/mysqldb" "$MYSQL_DATA_DIR" > /dev/null 2>&1
723         chmod 751 "$MYSQL_CLUSTER_DIR" "$MYSQL_CLUSTER_DIR/mysqldb"
724
725         if [ -f /usr/share/mysql/mysqld.conf -a ! -f "$MYSQL_CLUSTER_DIR/mysqld.conf" ]; then
726             sed -e "
727                 s#\(datadir.*\)=.*#\1= $MYSQL_DATA_DIR#g;
728                 s#\(pid-file.*\)=.*#\1= $MYSQL_PIDFILE#g;
729                 s#\(socket.*\)=.*#\1= $MYSQL_SOCKET#g;
730                 s#@clusterdir@#$MYSQL_CLUSTER_DIR#g;
731                 " /usr/share/mysql/mysqld.conf > "$MYSQL_CLUSTER_DIR/mysqld.conf"
732             chown root:root "$MYSQL_CLUSTER_DIR/mysqld.conf"
733             chmod 640 "$MYSQL_CLUSTER_DIR/mysqld.conf"
734         fi
735
736         if [ ! -e /var/lib/mysql/mysql.sock ] || [ -L /var/lib/mysql/mysql.sock ] && [ -z "$(readlink /var/lib/mysql/mysql.sock)" ]; then
737                 sock=${MYSQL_SOCKET#/var/lib/mysql/} # make it relative if possible
738             ln -s "$sock" /var/lib/mysql/mysql.sock
739         fi
740
741         if /usr/sbin/mysqld --bootstrap --skip-grant-tables \
742             --datadir=$MYSQL_DATA_DIR --user=$MYSQL_USER << END_OF_DATA
743 CREATE DATABASE mysql;
744 use mysql;
745 $c_d
746 $i_d
747
748 $c_h
749 $i_h
750
751 $c_u
752 $i_u
753
754 $c_f
755 $i_f
756
757 $c_t
758 $c_c
759
760 $c_ht
761 $c_hc
762 $c_hk
763 $c_hr
764
765 $c_tzn
766 $c_tz
767 $c_tzt
768 $c_tztt
769 $c_tzls
770
771 $c_p
772 $c_pp
773 END_OF_DATA
774         then
775             ok
776         cat << END_OF_MSG
777
778 PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL USERS!
779 This is done (after starting database; press enter when asked for password) with:
780
781 /usr/bin/mysqladmin -u mysql -S $MYSQL_SOCKET password 'password'
782 /usr/bin/mysqladmin -h $hostname -u mysql -S $MYSQL_SOCKET password 'password'
783 /usr/bin/mysqladmin -u mysql_logrotate -S $MYSQL_SOCKET password 'password'
784
785 NOTE: mysql_logrotate password should be placed to $MYSQL_CONFIG in
786 mysqladmin section. See the manual for more instructions.
787
788 If you want to use new help tables in MySQL 4.1.x then you'll need to import the help data:
789 /usr/bin/mysql -u mysql -p -S $MYSQL_SOCKET mysql < /usr/share/mysql/fill_help_tables.sql
790
791 END_OF_MSG
792       else
793             fail
794             cat << END_OF_MSG
795 Installation of grant tables FAILED!
796
797 Examine the logs in $MYSQL_DATA_DIR for more information.  You can
798 also try to start the mysqld demon with:
799
800 /usr/sbin/mysqld --skip-grant &
801
802 You can use the command line tool /usr/bin/mysql to connect to the mysql
803 database and look at the grant tables:
804
805 shell> /usr/bin/mysql -u mysql mysql
806 mysql> show tables
807
808 Try 'mysqld --help' if you have problems with paths. Setting on
809 logging in /etc/mysqld.conf gives you a log in /var/log/mysql/log that
810 may be helpful. The latest information about MySQL is available on the
811 web at http://www.mysql.com/.
812
813 Please check PLD Linux ftp site for newer versions of this package.
814
815 Please consult the MySQL manual section: 'Problems running
816 mysql_install_db', and the manual section that describes problems on
817 your OS.  Another information source is the MySQL email archive.
818 Please check all of the above before mailing us!  And if you do mail
819 us, you MUST use the /usr/bin/mysqlbug script!
820
821 END_OF_MSG
822
823         exit 1
824         fi
825 }
826
827 #
828 # End of useful functions.
829 #
830
831 start() {
832         if [ ! -f $MYSQL_ERRLOG ]; then
833                 touch $MYSQL_ERRLOG
834         fi
835         chown mysql:mysql $MYSQL_ERRLOG
836         chmod 640 $MYSQL_ERRLOG
837
838         for mysqldir in $DB_CLUSTERS; do
839                 mysqlstatus "$mysqldir" start
840                 if [ "$MYSQL_STATUS" = "running" ]; then
841                         msg_already_running "MySQL $mysqldir"
842                 else
843                         mysqlstart "$mysqldir"
844                 fi
845         done
846         mysqlsubsys
847 }
848
849 stop() {
850         for mysqldir in $DB_CLUSTERS; do
851                 mysqlstatus "$mysqldir" stop
852                 if [ "$MYSQL_STATUS" = "not running" ]; then
853                         msg_not_running "MySQL $mysqldir"
854                 else
855                         mysqlstop "$mysqldir"
856                 fi
857         done
858         mysqlsubsys
859 }
860
861 RETVAL=0
862 case "$action" in
863   start)
864         start
865         ;;
866   stop)
867         stop
868         ;;
869   status)
870         for mysqldir in $DB_CLUSTERS; do
871                 mysqlstatus "$mysqldir"
872                 if [ "$MYSQL_STATUS" = "running" ]; then
873                         show "MySQL cluster %s, PID %s" "$mysqldir" "$MYSQL_PID"
874                         progress "$MYSQL_STATUS"
875                 else
876                         show "MySQL cluster %s" "$mysqldir"
877                         progress "$MYSQL_STATUS" "$CFAIL"
878                 fi
879                 echo
880         done
881         exit $?
882         ;;
883   restart|force-reload)
884         stop
885         start
886         ;;
887   init)
888         for mysqldir in $DB_CLUSTERS; do
889                 mysqlinit "$mysqldir"
890         done
891         exit $?
892         ;;
893   flush-logs)
894         for mysqldir in $DB_CLUSTERS; do
895             mysqlgetconfig "$mysqldir"
896                 # just if mysqld is really running
897                 if /usr/bin/mysqladmin --defaults-file="$MYSQL_CONFIG" --socket="$MYSQL_SOCKET" ping >/dev/null 2>&1; then
898                         /usr/bin/mysqladmin --defaults-file="$MYSQL_CONFIG" --socket="$MYSQL_SOCKET" flush-logs
899                 fi
900         done
901         ;;
902   *)
903         msg_usage "$0 {start|stop|init|restart|force-reload|status}"
904         exit 3
905 esac
906
907 exit $RETVAL
908
909 # vi: shiftwidth=4 tabstop=4
This page took 0.094676 seconds and 4 git commands to generate.