]> git.pld-linux.org Git - packages/mysql.git/blob - mysql.init
- use POSIX-compliant chown syntax, use setsid for mysql (it doesn't detach from...
[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
10 # Source function library
11 . /etc/rc.d/init.d/functions
12
13 # Get network config
14 . /etc/sysconfig/network
15
16 # Get service config
17 if [ -f /etc/sysconfig/mysql ]; then
18         . /etc/sysconfig/mysql
19 else
20         nls "Error: %s not found" /etc/sysconfig/mysql
21         nls " MySQL can't be run."
22         exit 1
23 fi
24
25 if [ -z "$MYSQL_DB_CLUSTERS" ]; then
26         nls "Warning: MYSQL_DB_CLUSTERS not found or is empty"
27         nls "defaulting to /var/lib/mysql (compatiblity mode)"
28         MYSQL_DB_CLUSTERS="/var/lib/mysql"
29 fi
30
31 # Check that networking is up
32 if is_yes "${NETWORKING}"; then
33         if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status -a "$1" != init ]; then
34                 msg_network_down MySQL
35                 exit 1
36         fi
37 else
38         exit 0
39 fi
40
41 action="$1"
42
43 # any db cluster as command line argument?
44 if [ $# -gt 1 ]; then
45         shift
46         # perform action for specified clusters only
47         DB_CLUSTERS="$@"
48 else
49         DB_CLUSTERS="$MYSQL_DB_CLUSTERS"
50 fi
51
52 MYSQL_ERRLOG=/var/log/mysql/err
53
54 #
55 # Useful functions.
56 #
57
58 #
59 # check for mysql status
60 #
61 # arguments:
62 # $1 - db cluster
63 #
64 # sets variables:
65 # MYSQL_STATUS = running | not running
66 # MYSQL_PID    = pid of mysqld process
67 #
68 mysqlstatus() {
69         clusterdir="$1"
70         mysqlgetconfig "$clusterdir"
71         MYSQL_STATUS="not running"
72         MYSQL_PID="unknown"
73
74         [ -f "$MYSQL_PIDFILE" ] && MYSQL_PID=$(cat "$MYSQL_PIDFILE")
75
76         if [ ! -d "/proc/$MYSQL_PID" -a "$MYSQL_PID" != "unknown" ]; then
77             MYSQL_STATUS="died"
78         elif [ -d "/proc/$MYSQL_PID" ]; then
79             grep -q "$MYSQL_PIDFILE" /proc/$MYSQL_PID/cmdline && MYSQL_STATUS="running" || MYSQL_STATUS="not running"
80         fi
81 }
82
83 # get mysql configuration in variables
84 # MYSQL_CONFIG MYSQL_DATA_DIR MYSQL_USER MYSQL_PIDFILE
85 #
86 # arguments
87 # $1 - db cluster
88
89 mysqlgetconfig() {
90         clusterdir="$1"
91         config_file="$clusterdir/mysqld.conf"
92
93         # emulate old behaviour if only one cluster specified
94         if [ "$clusterdir" = "$MYSQL_DB_CLUSTERS" -a "$clusterdir" = "/var/lib/mysql" -a -f /etc/mysqld.conf ]; then
95                 MYSQL_NO_CLUSTER_COMPAT=yes; export MYSQL_NO_CLUSTER_COMPAT
96                 config_file=/etc/mysqld.conf
97         fi
98
99         MYSQL_CLUSTER_DIR="$clusterdir"; export MYSQL_CLUSTER_DIR
100         MYSQL_CONFIG="$config_file"; export MYSQL_CONFIG
101
102         if [ ! -f "$config_file" ]; then
103                 nls "Error: config file %s not found" "$config_file"
104                 nls " MySQL can't be run."
105                 exit 6
106         fi
107
108         eval `awk '
109 /^[ \t]*\[.*\][ \t]*$/ {
110         match($0,/\[.*\]/)
111         section=substr($0,RSTART+1,RSTART+RLENGTH-3)
112 }
113 section=="mysqld" && $2~"=" {
114         if ($1=="datadir") {
115                 printf("MYSQL_DATA_DIR=%s;", $3)
116         } else if ($1=="user") {
117                 printf("MYSQL_USER=%s;", $3)
118         } else if ($1=="pid-file") {
119                 printf("MYSQL_PIDFILE=%s;", $3)
120         } else if ($1=="socket") {
121                 printf("MYSQL_SOCKET=%s;", $3)
122         }
123 }
124 END {
125         print "export MYSQL_DATA_DIR MYSQL_USER MYSQL_PIDFILE MYSQL_SOCKET"
126 }
127 ' $config_file`
128
129         if [ -z "$MYSQL_DATA_DIR" -o "$MYSQL_DATA_DIR" != "$clusterdir/mysqldb/db" ]; then
130                 nls "Error: datadir specified in %s should be %s" "$config_file" "$clusterdir/mysqldb/db"
131                 nls " MySQL can't be run."
132                 exit 6
133         fi
134
135         if ! is_yes "$MYSQL_NO_CLUSTER_COMPAT"; then                    
136                 if [ -z "$MYSQL_PIDFILE" -o "$MYSQL_PIDFILE" != "$clusterdir/mysqldb/mysql.pid" ]; then
137                         nls "Error: pid-file specified in %s should be %s" "$config_file" "$clusterdir/mysql.pid"
138                         nls " MySQL can't be run."
139                         exit 6
140                 fi
141         fi
142
143         if [ -z $MYSQL_USER ]; then
144                 echo "$(nls 'MySQL user not configured properly')"'!' >&2
145                 nls "Edit %s and configure it." "$config_file" >&2
146                 exit 6
147         fi
148 }
149
150 # start mysql
151 mysqlstart() {
152         clusterdir="$1"
153         mysqlgetconfig "$clusterdir"
154         if [ ! -d "$MYSQL_DATA_DIR/mysql" ]; then
155                 nls "MySQL cluster %s not initialized." "$clusterdir"
156                 nls "Try \`%s init %s' before start." "$0" "$clusterdir"
157                 exit 6
158         fi
159
160         msg_starting "MySQL $clusterdir"
161         busy
162         [ -z "$DEFAULT_SERVICE_RUN_NICE_LEVEL" ] && DEFAULT_SERVICE_RUN_NICE_LEVEL=0
163         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 &
164         sleep 2
165         mysqlstatus "$clusterdir"
166         if [ "$MYSQL_STATUS" = "running" -a "$MYSQL_PID" != "unknown" ]; then
167                 ok
168         elif [ "$MYSQL_STATUS" = "died" ]; then
169                 RETVAL=1
170                 died
171         else
172                 RETVAL=1
173                 fail
174         fi
175 }
176
177 # stop mysql
178 mysqlstop() {
179         clusterdir="$1"
180         mysqlstatus "$clusterdir"
181         msg_stopping "MySQL $clusterdir"
182         busy
183         [ "$MYSQL_PID" != "unknown" ] && kill -TERM "$MYSQL_PID" 2> /dev/null
184         # 3 seconds
185         for nr in 1 2 3; do
186                 [ -d "/proc/$MYSQL_PID" ] && sleep 1
187         done
188         mysqlstatus "$clusterdir"
189         if [ "$MYSQL_STATUS" = "died" ]; then
190                 died
191         elif [ "$MYSQL_STATUS" = "running" ]; then
192                 fail
193         else
194                 ok
195         fi
196         rm -f "$MYSQL_PIDFILE"
197 }
198
199 #
200 # check for running mysql instances; if any instance is running then
201 # create subsys lock file
202 #
203 mysqlsubsys() {
204         # check for every defined db cluster in sysconfig file
205         for mysqldir in $DB_CLUSTERS; do
206                 mysqlstatus "$mysqldir"
207                 if [ "$MYSQL_STATUS" = "running" ]; then
208                         touch /var/lock/subsys/mysql
209                         return
210                 fi
211         done
212         rm -f /var/lock/subsys/mysql
213 }
214
215 mysqlinit() {
216         clusterdir="$1"
217                 
218         if [ -f "$clusterdir/mysqld.conf" ]; then
219             mysqlgetconfig "$clusterdir"
220         else
221             MYSQL_USER="mysql"
222             MYSQL_CLUSTER_DIR="$clusterdir"
223             MYSQL_DATA_DIR="$clusterdir/mysqldb/db"
224             MYSQL_PIDFILE="$clusterdir/mysqldb/mysql.pid"
225             MYSQL_SOCKET="$clusterdir/mysqldb/mysql.sock"
226         fi
227
228         nls "Initializing cluster %s" "$clusterdir"
229
230         # Check if not exist init database
231         if [ -d "$MYSQL_DATA_DIR/mysql" ]; then
232                 nls "Seems that database is initialized now. Remove by hand %s" "$MYSQL_DATA_DIR/mysqldb/mysql"
233                 nls "before initializing database."
234                 nls "For now skipping cluster %s." "$clusterdir"
235                 return
236         fi
237
238         show "Creating privilege mysql tables for $MYSQL_DATA_DIR"
239         busy
240         TMP=/tmp TMPDIR=/tmp 
241
242                 
243         # Install this in the user table, too
244         hostname="`hostname --fqdn 2> /dev/null | tr -d '[:space:]'`"
245         [ -z "$hostname" ] && hostname="localhost-unknown"
246                 
247         # Check if hostname is valid
248         if [ -z "$hostname" ]; then
249                 deltext
250                 fail
251                 nls "Sorry, the host name is not configured."
252                 nls "Please configure the 'hostname' command to return a hostname."
253                 exit 1
254         elif ! hostname -i >/dev/null 2>&1; then 
255                 deltext
256                 fail
257                 nls "Sorry, the host '%s' could not be looked up." "$hostname"
258                 nls "Please configure the 'hostname' command to return a correct hostname."
259                 exit 1
260         fi
261
262         # Initialize variables
263         c_d="" i_d=""
264         c_h="" i_h=""
265         c_u="" i_u=""
266         c_f="" i_f=""
267         c_t="" c_c=""
268
269         # Check for old tables
270         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/db.frm
271         then
272           # mysqld --bootstrap wants one command/line
273           c_d="$c_d CREATE TABLE db ("
274           c_d="$c_d   Host char(60) DEFAULT '' NOT NULL,"
275           c_d="$c_d   Db char(64) DEFAULT '' NOT NULL,"
276           c_d="$c_d   User char(16) DEFAULT '' NOT NULL,"
277           c_d="$c_d   Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
278           c_d="$c_d   Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
279           c_d="$c_d   Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
280           c_d="$c_d   Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
281           c_d="$c_d   Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
282           c_d="$c_d   Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
283           c_d="$c_d   Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
284           c_d="$c_d   References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
285           c_d="$c_d   Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
286           c_d="$c_d   Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
287           c_d="$c_d   Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
288           c_d="$c_d   Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
289           c_d="$c_d PRIMARY KEY Host (Host,Db,User),"
290           c_d="$c_d KEY User (User)"
291           c_d="$c_d )"
292           c_d="$c_d comment='Database privileges';"
293
294           i_d="INSERT INTO db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y');
295           INSERT INTO db VALUES ('%','test\_%','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y');"
296             
297         fi
298
299         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/host.frm
300         then
301           c_h="$c_h CREATE TABLE host ("
302           c_h="$c_h  Host char(60) DEFAULT '' NOT NULL,"
303           c_h="$c_h  Db char(64) DEFAULT '' NOT NULL,"
304           c_h="$c_h  Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
305           c_h="$c_h  Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
306           c_h="$c_h  Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
307           c_h="$c_h  Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
308           c_h="$c_h  Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
309           c_h="$c_h  Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
310           c_h="$c_h  Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
311           c_h="$c_h  References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
312           c_h="$c_h  Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
313           c_h="$c_h  Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
314           c_h="$c_h  Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
315           c_h="$c_h  Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
316           c_h="$c_h  PRIMARY KEY Host (Host,Db)"
317           c_h="$c_h )"
318           c_h="$c_h comment='Host privileges;  Merged with database privileges';"
319         fi
320
321         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/user.frm
322         then
323           c_u="$c_u CREATE TABLE user ("
324           c_u="$c_u   Host char(60) DEFAULT '' NOT NULL,"
325           c_u="$c_u   User char(16) DEFAULT '' NOT NULL,"
326           c_u="$c_u   Password char(16) DEFAULT '' NOT NULL,"
327           c_u="$c_u   Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
328           c_u="$c_u   Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
329           c_u="$c_u   Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
330           c_u="$c_u   Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
331           c_u="$c_u   Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
332           c_u="$c_u   Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
333           c_u="$c_u   Reload_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
334           c_u="$c_u   Shutdown_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
335           c_u="$c_u   Process_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
336           c_u="$c_u   File_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
337           c_u="$c_u   Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
338           c_u="$c_u   References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
339           c_u="$c_u   Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
340           c_u="$c_u   Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
341           c_u="$c_u   Show_db_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
342           c_u="$c_u   Super_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
343           c_u="$c_u   Create_tmp_table_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
344           c_u="$c_u   Lock_tables_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
345           c_u="$c_u   Execute_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
346           c_u="$c_u   Repl_slave_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
347           c_u="$c_u   Repl_client_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
348           c_u="$c_u   ssl_type enum('','ANY','X509', 'SPECIFIED') DEFAULT '' NOT NULL,"
349           c_u="$c_u   ssl_cipher BLOB NOT NULL,"
350           c_u="$c_u   x509_issuer BLOB NOT NULL,"
351           c_u="$c_u   x509_subject BLOB NOT NULL,"
352           c_u="$c_u   max_questions int(11) unsigned DEFAULT 0  NOT NULL,"
353           c_u="$c_u   max_updates int(11) unsigned DEFAULT 0  NOT NULL,"
354           c_u="$c_u   max_connections int(11) unsigned DEFAULT 0  NOT NULL,"
355           c_u="$c_u   PRIMARY KEY Host (Host,User)"
356           c_u="$c_u )"
357           c_u="$c_u comment='Users and global privileges';"
358
359           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);
360           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);
361
362           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);
363           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);
364
365           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);"
366         fi
367
368         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/func.frm
369         then
370           c_f="$c_f CREATE TABLE func ("
371           c_f="$c_f   name char(64) DEFAULT '' NOT NULL,"
372           c_f="$c_f   ret tinyint(1) DEFAULT '0' NOT NULL,"
373           c_f="$c_f   dl char(128) DEFAULT '' NOT NULL,"
374           c_f="$c_f   type enum ('function','aggregate') NOT NULL,"
375           c_f="$c_f   PRIMARY KEY (name)"
376           c_f="$c_f )"
377           c_f="$c_f   comment='User defined functions';"
378         fi
379
380         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/tables_priv.frm
381         then
382           c_t="$c_t CREATE TABLE tables_priv ("
383           c_t="$c_t   Host char(60) DEFAULT '' NOT NULL,"
384           c_t="$c_t   Db char(64) DEFAULT '' NOT NULL,"
385           c_t="$c_t   User char(16) DEFAULT '' NOT NULL,"
386           c_t="$c_t   Table_name char(60) DEFAULT '' NOT NULL,"
387           c_t="$c_t   Grantor char(77) DEFAULT '' NOT NULL,"
388           c_t="$c_t   Timestamp timestamp(14),"
389           c_t="$c_t   Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') DEFAULT '' NOT NULL,"
390           c_t="$c_t   Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL,"
391           c_t="$c_t   PRIMARY KEY (Host,Db,User,Table_name),"
392           c_t="$c_t   KEY Grantor (Grantor)"
393           c_t="$c_t )"
394           c_t="$c_t   comment='Table privileges';"
395         fi
396
397         if test ! -f $MYSQL_DATA_DIR/mysqldb/mysql/columns_priv.frm
398         then
399           c_c="$c_c CREATE TABLE columns_priv ("
400           c_c="$c_c   Host char(60) DEFAULT '' NOT NULL,"
401           c_c="$c_c   Db char(60) DEFAULT '' NOT NULL,"
402           c_c="$c_c   User char(16) DEFAULT '' NOT NULL,"
403           c_c="$c_c   Table_name char(60) DEFAULT '' NOT NULL,"
404           c_c="$c_c   Column_name char(60) DEFAULT '' NOT NULL,"
405           c_c="$c_c   Timestamp timestamp(14),"
406           c_c="$c_c   Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL,"
407           c_c="$c_c   PRIMARY KEY (Host,Db,User,Table_name,Column_name)"
408           c_c="$c_c )"
409           c_c="$c_c   comment='Column privileges';"
410         fi
411
412         mkdir -p "$MYSQL_DATA_DIR" > /dev/null 2>&1
413         chown root:root "$MYSQL_CLUSTER_DIR"
414         chown mysql:mysql "$MYSQL_CLUSTER_DIR/mysqldb" "$MYSQL_DATA_DIR" > /dev/null 2>&1
415         chmod 751 "$MYSQL_CLUSTER_DIR" "$MYSQL_CLUSTER_DIR/mysqldb"
416
417         if [ -f /usr/share/mysql/mysqld.conf -a ! -f "$MYSQL_CLUSTER_DIR/mysqld.conf" ]; then
418             sed -e "s#datadir.*=.*#datadir      = $MYSQL_DATA_DIR#g" \
419                 -e "s#pid-file.*=.*#pid-file = $MYSQL_PIDFILE#g" \
420                 -e "s#socket.*=.*#socket = $MYSQL_SOCKET#g" \
421                 /usr/share/mysql/mysqld.conf > "$MYSQL_CLUSTER_DIR/mysqld.conf"
422             chown root:root "$MYSQL_CLUSTER_DIR/mysqld.conf"
423             chmod 640 "$MYSQL_CLUSTER_DIR/mysqld.conf"
424         fi
425                 
426
427         if /usr/sbin/mysqld --bootstrap --skip-grant-tables \
428             --datadir=$MYSQL_DATA_DIR --user=$MYSQL_USER << END_OF_DATA
429 CREATE DATABASE mysql;
430 use mysql;
431 $c_d
432 $i_d
433
434 $c_h
435 $i_h
436
437 $c_u
438 $i_u
439
440 $c_f
441 $i_f
442
443 $c_t
444 $c_c
445 END_OF_DATA
446         then 
447             ok
448         cat << END_OF_MSG
449
450 PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL USERS!
451 This is done (after starting database) with:
452
453 /usr/bin/mysqladmin -u mysql -S $MYSQL_SOCKET password 'password'
454 /usr/bin/mysqladmin -h $hostname -u mysql -S $MYSQL_SOCKET password 'password'
455 /usr/bin/mysqladmin -u mysql_logrotate -S $MYSQL_SOCKET password 'password'
456
457 NOTE: mysql_logrotate password should be placed to $MYSQL_CONFIG in
458 mysqladmin section. See the manual for more instructions.
459
460 IMPORTANT: The configuration file is mysqld.conf in MYSQ_DB_CLUSTERS directories.
461
462 END_OF_MSG
463       else  
464             fail
465             cat << END_OF_MSG
466 Installation of grant tables FAILED!
467
468 Examine the logs in $MYSQL_DATA_DIR for more information.  You can
469 also try to start the mysqld demon with:
470
471 /usr/sbin/mysqld --skip-grant &
472
473 You can use the command line tool /usr/bin/mysql to connect to the mysql
474 database and look at the grant tables:
475
476 shell> /usr/bin/mysql -u mysql mysql
477 mysql> show tables
478
479 Try 'mysqld --help' if you have problems with paths. Setting on
480 logging in /etc/mysqld.conf gives you a log in /var/log/mysql/log that
481 may be helpful. The latest information about MySQL is available on the
482 web at http://www.mysql.com/.
483
484 Please check PLD ftp site for newer versions of this package.
485
486 Please consult the MySQL manual section: 'Problems running
487 mysql_install_db', and the manual section that describes problems on
488 your OS.  Another information source is the MySQL email archive.
489 Please check all of the above before mailing us!  And if you do mail
490 us, you MUST use the /usr/bin/mysqlbug script!  
491
492 END_OF_MSG
493
494         exit 1
495         fi
496 }
497
498 #
499 # End of useful functions.
500 #
501
502 RETVAL=0
503 case "$action" in
504   start)
505         if [ ! -f $MYSQL_ERRLOG ]; then
506                 touch $MYSQL_ERRLOG
507         fi
508         chown mysql:mysql $MYSQL_ERRLOG
509         chmod 640 $MYSQL_ERRLOG
510
511         for mysqldir in $DB_CLUSTERS; do
512                 mysqlstatus "$mysqldir"
513                 if [ "$MYSQL_STATUS" = "running" ]; then
514                         msg_already_running "MySQL $mysqldir"
515                 else
516                         mysqlstart "$mysqldir"
517                 fi
518         done
519         mysqlsubsys
520         ;;
521   stop)
522         for mysqldir in $DB_CLUSTERS; do
523                 mysqlstatus "$mysqldir"
524                 if [ "$MYSQL_STATUS" = "not running" ]; then
525                         msg_not_running "MySQL $mysqldir"
526                 else
527                         mysqlstop "$mysqldir"
528                 fi
529         done
530         mysqlsubsys
531         ;;
532   status)
533         for mysqldir in $DB_CLUSTERS; do
534                 mysqlstatus "$mysqldir"
535                 echo "MySQL cluster $mysqldir: $MYSQL_STATUS"
536         done
537         exit $?
538         ;;
539   restart|force-reload)
540         $0 stop
541         $0 start
542         exit $?
543         ;;
544   init)
545         for mysqldir in $DB_CLUSTERS; do
546                 mysqlinit "$mysqldir"
547         done
548         ;;
549   *)
550         msg_usage "$0 {start|stop|init|restart|force-reload|status}"
551         exit 3
552 esac
553
554 exit $RETVAL
This page took 0.07038 seconds and 4 git commands to generate.