]> git.pld-linux.org Git - packages/percona-server.git/blame - mysql.init
- allow some actions when network is down
[packages/percona-server.git] / mysql.init
CommitLineData
53a28f77 1#!/bin/sh
2#
3# mysql A very fast and reliable SQL database engine
4#
f9004b9d 5# chkconfig: 2345 84 25
53a28f77 6#
7# description: A very fast and reliable SQL database engine.
8#
c42b39b6 9# pidfile: /var/lib/mysql/mysqld.pid
53a28f77 10
11# Source function library
12. /etc/rc.d/init.d/functions
13
14# Get network config
15. /etc/sysconfig/network
16
ac28c610 17# Check that networking is up
8eb71226 18if is_yes "${NETWORKING}"; then
a34ac4a4 19 if [ ! -f /var/lock/subsys/network -a != stop -a != status -a != init ]; then
8eb71226 20 msg_network_down MySQL
21 exit 1
22 fi
23else
24 exit 0
e9ca44ab 25fi
26
27MYSQLD_ERRLOG=/var/log/mysql/err
28MYSQLD_CONFIG=/etc/mysqld.conf
40c36bca 29
53a28f77 30# Get service config
7f44e59a 31if [ -f /etc/sysconfig/mysql ]; then
860cd80c 32 . /etc/sysconfig/mysql
860cd80c 33fi
53a28f77 34
ac28c610 35# Daemon doesn't die if config doesn't exist
e9ca44ab 36if [ ! -f $MYSQLD_CONFIG ]; then
02e96f2e 37 nls "%s config %s does not exist." MySQL "$MYSQLD_CONFIG" >&2
38 exit 6
53a28f77 39fi
40
823c13f7
SZ
41eval `awk '
42/^[ \t]*\[.*\][ \t]*$/ {
43 match($0,/\[.*\]/)
44 section=substr($0,RSTART+1,RSTART+RLENGTH-3)
45}
46section=="mysqld" && $2~"=" {
47 if ($1=="datadir") {
48 printf("MYSQL_DATA_DIR=%s;", $3)
49 } else if ($1=="user") {
50 printf("MYSQL_USER=%s;", $3)
51 } else if ($1=="pid-file") {
52 printf("MYSQL_PIDFILE=%s;", $3)
53 }
54}
55END {
56 print "export MYSQL_DATA_DIR MYSQL_USER MYSQL_PIDFILE"
57}
58' /etc/mysqld.conf`
e9ca44ab 59
60if [ -z $MYSQL_DATA_DIR ]; then
8eb71226 61 echo $(nls "MySQL datadir %s not configured properly" "$MYSQL_DATA_DIR")'!'
02e96f2e 62 nls "Edit %s and configure it." "$MYSQLD_CONFIG" >&2
63 exit 6
e9ca44ab 64fi
65
66if [ -z $MYSQL_USER ]; then
8eb71226 67 echo $(nls "MySQL user not configured properly")'!'
02e96f2e 68 nls "Edit %s and configure it." "$MYSQLD_CONFIG" >&2
69 exit 6
e9ca44ab 70fi
71
02e96f2e 72RETVAL=0
83fddc12 73case "$1" in
b92e5cd1 74 start)
860cd80c 75 if [ ! -d "$MYSQL_DATA_DIR/mysql" ]; then
02e96f2e 76 nls "MySQL database not initialized. Try \"%s init\" before start." "$0" >&2
77 exit 6
860cd80c 78 fi
e9ca44ab 79
80 # Check if the service is already running?
02e96f2e 81 if [ ! -f /var/lock/subsys/mysql ]; then
e9ca44ab 82 msg_starting MySQL
5678822f 83 busy
02e96f2e 84
e9ca44ab 85 if [ ! -f $MYSQLD_ERRLOG ]; then
b92e5cd1 86 touch $MYSQLD_ERRLOG
e9ca44ab 87 fi
88 chown mysql.mysql $MYSQLD_ERRLOG
89 chmod 640 $MYSQLD_ERRLOG
1024bc72
AM
90
91 [ -z "$DEFAULT_SERVICE_RUN_NICE_LEVEL" ] && DEFAULT_SERVICE_RUN_NICE_LEVEL=0
b7986924 92 TMPDIR=/tmp nice -n ${SERVICE_RUN_NICE_LEVEL:-$DEFAULT_SERVICE_RUN_NICE_LEVEL} /usr/sbin/mysqld --defaults-file=$MYSQLD_CONFIG >>$MYSQLD_ERRLOG 2>&1 &
8a2b6620 93 sleep 1
40c36bca
AF
94 if ps -C mysqld >/dev/null 2>&1; then
95 ok
8a2b6620 96 else
e9ca44ab 97 RETVAL=1
40c36bca 98 fail
8a2b6620 99 fi
ee9b6a50 100 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mysql
02e96f2e 101 else
102 msg_already_running MySQL
53a28f77 103 fi
53a28f77 104 ;;
105 stop)
b92e5cd1 106 if [ -f /var/lock/subsys/mysql ]; then
107 msg_stopping MySQL
108 killproc mysqld
e9ca44ab 109 sleep 1
b92e5cd1 110 rm -f /var/lock/subsys/mysql $MYSQLD_PIDFILE >/dev/null 2>&1
111 else
112 msg_not_running MySQL
b92e5cd1 113 fi
53a28f77 114 ;;
115 status)
83fddc12 116 status mysqld
ee9b6a50 117 exit $?
53a28f77 118 ;;
02e96f2e 119 restart|force-reload)
53a28f77 120 $0 stop
121 $0 start
02e96f2e 122 exit $?
53a28f77 123 ;;
573e1dcc 124 init)
125 # Check if not exist init database
e9ca44ab 126 if [ -d "$MYSQL_DATA_DIR/mysql" ]; then
b92e5cd1 127 nls "Seems that database is initialized now. Remove by hand %s" "$MYSQL_DATA_DIR/mysql"
128 nls "before initializing database."
129 exit 1;
e9ca44ab 130 fi
131
132 show "Creating privilege mysql tables"
133 busy
134 TMP=/tmp TMPDIR=/tmp
f19b03aa 135
ac28c610 136 # Install this in the user table, too
823c13f7 137 hostname="`hostname --fqdn | tr -d '[:space:]'`"
40c36bca 138
e9ca44ab 139 # Check if hostname is valid
140 if [ -z "$hostname" ]; then
141 deltext
b92e5cd1 142 fail
143 nls "Sorry, the host name is not configured."
144 nls "Please configure the 'hostname' command to return a hostname."
145 exit 1
146 elif ! hostname -i >/dev/null 2>&1; then
147 deltext
148 fail
149 nls "Sorry, the host '%s' could not be looked up." "$hostname"
150 nls "Please configure the 'hostname' command to return a correct hostname."
e9ca44ab 151 exit 1
e9ca44ab 152 fi
153
823c13f7
SZ
154 # Initialize variables
155 c_d="" i_d=""
156 c_h="" i_h=""
157 c_u="" i_u=""
158 c_f="" i_f=""
159 c_t="" c_c=""
02e96f2e 160
823c13f7
SZ
161 # Check for old tables
162 if test ! -f $mdata/db.frm
163 then
164 # mysqld --bootstrap wants one command/line
165 c_d="$c_d CREATE TABLE db ("
166 c_d="$c_d Host char(60) DEFAULT '' NOT NULL,"
167 c_d="$c_d Db char(64) DEFAULT '' NOT NULL,"
168 c_d="$c_d User char(16) DEFAULT '' NOT NULL,"
169 c_d="$c_d Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
170 c_d="$c_d Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
171 c_d="$c_d Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
172 c_d="$c_d Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
173 c_d="$c_d Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
174 c_d="$c_d Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
175 c_d="$c_d Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
176 c_d="$c_d References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
177 c_d="$c_d Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
178 c_d="$c_d Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
179 c_d="$c_d PRIMARY KEY Host (Host,Db,User),"
180 c_d="$c_d KEY User (User)"
181 c_d="$c_d )"
182 c_d="$c_d comment='Database privileges';"
02e96f2e 183
823c13f7
SZ
184 i_d="INSERT INTO db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y');
185 INSERT INTO db VALUES ('%','test\_%','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y');"
186 fi
02e96f2e 187
823c13f7
SZ
188 if test ! -f $mdata/host.frm
189 then
190 c_h="$c_h CREATE TABLE host ("
191 c_h="$c_h Host char(60) DEFAULT '' NOT NULL,"
192 c_h="$c_h Db char(64) DEFAULT '' NOT NULL,"
193 c_h="$c_h Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
194 c_h="$c_h Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
195 c_h="$c_h Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
196 c_h="$c_h Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
197 c_h="$c_h Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
198 c_h="$c_h Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
199 c_h="$c_h Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
200 c_h="$c_h References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
201 c_h="$c_h Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
202 c_h="$c_h Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
203 c_h="$c_h PRIMARY KEY Host (Host,Db)"
204 c_h="$c_h )"
205 c_h="$c_h comment='Host privileges; Merged with database privileges';"
206 fi
02e96f2e 207
823c13f7
SZ
208 if test ! -f $mdata/user.frm
209 then
210 c_u="$c_u CREATE TABLE user ("
211 c_u="$c_u Host char(60) DEFAULT '' NOT NULL,"
212 c_u="$c_u User char(16) DEFAULT '' NOT NULL,"
213 c_u="$c_u Password char(16) DEFAULT '' NOT NULL,"
214 c_u="$c_u Select_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
215 c_u="$c_u Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
216 c_u="$c_u Update_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
217 c_u="$c_u Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
218 c_u="$c_u Create_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
219 c_u="$c_u Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
220 c_u="$c_u Reload_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
221 c_u="$c_u Shutdown_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
222 c_u="$c_u Process_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
223 c_u="$c_u File_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
224 c_u="$c_u Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
225 c_u="$c_u References_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
226 c_u="$c_u Index_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
227 c_u="$c_u Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
228 c_u="$c_u PRIMARY KEY Host (Host,User)"
229 c_u="$c_u )"
230 c_u="$c_u comment='Users and global privileges';"
02e96f2e 231
823c13f7
SZ
232 i_u="INSERT INTO user VALUES ('localhost','mysql','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
233 INSERT INTO user VALUES ('$hostname','mysql','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
234
235 REPLACE INTO user VALUES ('localhost','mysql','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
236 REPLACE INTO user VALUES ('$hostname','mysql','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
237
1b6aa76d 238 INSERT INTO user VALUES ('localhost','mysql_logrotate','','N','N','N','N','N','N','Y','N','N','N','N','N','N','N');"
823c13f7 239 fi
02e96f2e 240
823c13f7
SZ
241 if test ! -f $mdata/func.frm
242 then
243 c_f="$c_f CREATE TABLE func ("
244 c_f="$c_f name char(64) DEFAULT '' NOT NULL,"
245 c_f="$c_f ret tinyint(1) DEFAULT '0' NOT NULL,"
246 c_f="$c_f dl char(128) DEFAULT '' NOT NULL,"
247 c_f="$c_f type enum ('function','aggregate') NOT NULL,"
248 c_f="$c_f PRIMARY KEY (name)"
249 c_f="$c_f )"
250 c_f="$c_f comment='User defined functions';"
251 fi
02e96f2e 252
823c13f7
SZ
253 if test ! -f $mdata/tables_priv.frm
254 then
255 c_t="$c_t CREATE TABLE tables_priv ("
256 c_t="$c_t Host char(60) DEFAULT '' NOT NULL,"
257 c_t="$c_t Db char(64) DEFAULT '' NOT NULL,"
258 c_t="$c_t User char(16) DEFAULT '' NOT NULL,"
259 c_t="$c_t Table_name char(60) DEFAULT '' NOT NULL,"
260 c_t="$c_t Grantor char(77) DEFAULT '' NOT NULL,"
261 c_t="$c_t Timestamp timestamp(14),"
262 c_t="$c_t Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') DEFAULT '' NOT NULL,"
263 c_t="$c_t Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL,"
264 c_t="$c_t PRIMARY KEY (Host,Db,User,Table_name),"
265 c_t="$c_t KEY Grantor (Grantor)"
266 c_t="$c_t )"
267 c_t="$c_t comment='Table privileges';"
268 fi
02e96f2e 269
823c13f7
SZ
270 if test ! -f $mdata/columns_priv.frm
271 then
272 c_c="$c_c CREATE TABLE columns_priv ("
273 c_c="$c_c Host char(60) DEFAULT '' NOT NULL,"
119ef1d0 274 c_c="$c_c Db char(60) DEFAULT '' NOT NULL,"
823c13f7 275 c_c="$c_c User char(16) DEFAULT '' NOT NULL,"
119ef1d0 276 c_c="$c_c Table_name char(60) DEFAULT '' NOT NULL,"
277 c_c="$c_c Column_name char(60) DEFAULT '' NOT NULL,"
823c13f7
SZ
278 c_c="$c_c Timestamp timestamp(14),"
279 c_c="$c_c Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL,"
280 c_c="$c_c PRIMARY KEY (Host,Db,User,Table_name,Column_name)"
281 c_c="$c_c )"
282 c_c="$c_c comment='Column privileges';"
283 fi
284
e9ca44ab 285 if /usr/sbin/mysqld --bootstrap --skip-grant-tables \
823c13f7
SZ
286 --datadir=$MYSQL_DATA_DIR --user=$MYSQL_USER << END_OF_DATA
287CREATE DATABASE mysql;
e9ca44ab 288use mysql;
823c13f7
SZ
289$c_d
290$i_d
291
292$c_h
293$i_h
e9ca44ab 294
823c13f7
SZ
295$c_u
296$i_u
297
298$c_f
299$i_f
300
301$c_t
302$c_c
303END_OF_DATA
e9ca44ab 304 then
e9ca44ab 305 ok
306 cat << END_OF_MSG
6a46c354 307
308PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL USERS!
e9ca44ab 309This is done with:
6a46c354 310
e9ca44ab 311/usr/bin/mysqladmin -u mysql password 'password'
f19b03aa 312/usr/bin/mysqladmin -h $hostname -u mysql password 'password'
e9ca44ab 313/usr/bin/mysqladmin -u mysql_logrotate password 'password'
6a46c354 314
315NOTE: mysql_logrotate password should be placed to /etc/mysqld.conf in
316mysqladmin section. See the manual for more instructions.
e9ca44ab 317
318END_OF_MSG
319 else
e9ca44ab 320 fail
321 cat << END_OF_MSG
322Installation of grant tables FAILED!
323
324Examine the logs in $MYSQL_DATA_DIR for more information. You can
325also try to start the mysqld demon with:
326
327/usr/sbin/mysqld --skip-grant &
328
329You can use the command line tool /usr/bin/mysql to connect to the mysql
330database and look at the grant tables:
331
332shell> /usr/bin/mysql -u mysql mysql
333mysql> show tables
334
335Try 'mysqld --help' if you have problems with paths. Setting on
336logging in /etc/mysqld.conf gives you a log in /var/log/mysql/log that
337may be helpful. The latest information about MySQL is available on the
78b16243 338web at http://www.mysql.com/.
e9ca44ab 339
340Please check PLD ftp site for newer versions of this package.
341
342Please consult the MySQL manual section: 'Problems running
343mysql_install_db', and the manual section that describes problems on
344your OS. Another information source is the MySQL email archive.
345Please check all of the above before mailing us! And if you do mail
346us, you MUST use the /usr/bin/mysqlbug script!
347
348END_OF_MSG
349
350 exit 1
823c13f7 351 fi
573e1dcc 352 ;;
53a28f77 353 *)
02e96f2e 354 msg_usage "$0 {start|stop|init|restart|force-reload|status}"
355 exit 3
53a28f77 356esac
40c36bca 357
ee9b6a50 358exit $RETVAL
This page took 0.098963 seconds and 4 git commands to generate.