3 # mysql A very fast and reliable SQL database engine
5 # chkconfig: 2345 90 25
7 # description: A very fast and reliable SQL database engine.
9 # pidfile: /var/lib/mysql/mysqld.pid
11 # Source function library
12 . /etc/rc.d/init.d/functions
15 . /etc/sysconfig/network
17 # Check that networking is up.
18 if is_no "${NETWORKING}"; then
19 msg_Network_Down MySQL
23 MYSQLD_ERRLOG=/var/log/mysql/err
24 MYSQLD_CONFIG=/etc/mysqld.conf
27 if [ -f /etc/sysconfig/mysql ] ; then
28 . /etc/sysconfig/mysql
31 # Daemon don't dies if config doesn't exists
32 if [ ! -f $MYSQLD_CONFIG ]; then
33 echo "MySQL config $MYSQLD_CONFIG not exists"
37 if [ ! -f $MYSQLD_CONFIG ]; then
38 echo "MySQL config $MYSQLD_CONFIG not exists"
42 MYSQL_DATA_DIR=`grep -m 1 "^[[:space:]]*datadir" $MYSQLD_CONFIG 2>/dev/null| cut -f 2 -d= | tr -d '[:space:]'`
43 MYSQL_USER=`grep -m 1 "^[[:space:]]*user" $MYSQLD_CONFIG 2>/dev/null| cut -f 2 -d= | tr -d '[:space:]'`
44 MYSQLD_PIDFILE=`grep -m 1 "^[[:space:]]*pid\-file" $MYSQLD_CONFIG 2>/dev/null| cut -f 2 -d= | tr -d '[:space:]'`
46 if [ -z $MYSQL_DATA_DIR ]; then
47 echo "MySQL datadir $MYSQL_DATA_DIR not configured propely!"
48 echo "Edit $MYSQLD_CONFIG and configure it."
52 if [ -z $MYSQL_USER ]; then
53 echo "MySQL user not configured propely!"
54 echo "Edit $MYSQLD_CONFIG and configure it."
61 if [ ! -d "$MYSQL_DATA_DIR/mysql" ]; then
62 echo "MySQL database not initialized. Try \"$0 init\" before start."
66 # Check if the service is already running?
67 if [ -f /var/lock/subsys/mysql ]; then
68 msg_Already_Running MySQL
73 if [ ! -f $MYSQLD_ERRLOG ]; then
76 chown mysql.mysql $MYSQLD_ERRLOG
77 chmod 640 $MYSQLD_ERRLOG
79 /usr/sbin/mysqld --defaults-file=$MYSQLD_CONFIG >>$MYSQLD_ERRLOG 2>&1 &
82 if ps -C mysqld >/dev/null 2>&1; then
89 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mysql
93 if [ -f /var/lock/subsys/mysql ]; then
97 rm -f /var/lock/subsys/mysql $MYSQLD_PIDFILE >/dev/null 2>&1
112 # Check if not exist init database
113 if [ -d "$MYSQL_DATA_DIR/mysql" ]; then
114 echo "Seems that database is initialized now. Remove by hand $MYSQL_DATA_DIR/mysql"
115 echo "before initialize database."
119 show "Creating privilege mysql tables"
122 hostname=`hostname | tr -d '[:space:]'` # Install this too in the user table
124 # Check if hostname is valid
125 if [ -z "$hostname" ]; then
128 echo "Sorry, the host name is not configured."
129 echo "Please configure the 'hostname' command to return a hostname."
131 elif ! hostname -i >/dev/null 2>&1; then
134 echo "Sorry, the host '$hostname' could not be looked up."
135 echo "Please configure the 'hostname' command to return a correct hostname."
139 #mysqld --bootstrap need whole (and only one) sql command in one line
141 create_db="$create_db CREATE TABLE db ( "
142 create_db="$create_db Host char(60) DEFAULT '' NOT NULL, "
143 create_db="$create_db Db char(32) DEFAULT '' NOT NULL,"
144 create_db="$create_db User char(16) DEFAULT '' NOT NULL, "
145 create_db="$create_db Select_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
146 create_db="$create_db Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
147 create_db="$create_db Update_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
148 create_db="$create_db Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
149 create_db="$create_db Create_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
150 create_db="$create_db Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
151 create_db="$create_db Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
152 create_db="$create_db References_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
153 create_db="$create_db Index_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
154 create_db="$create_db Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
155 create_db="$create_db PRIMARY KEY Host (Host,Db,User), "
156 create_db="$create_db KEY User (User)"
157 create_db="$create_db );"
160 create_host="$create_host CREATE TABLE host ( "
161 create_host="$create_host Host char(60) DEFAULT '' NOT NULL, "
162 create_host="$create_host Db char(32) DEFAULT '' NOT NULL, "
163 create_host="$create_host Select_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
164 create_host="$create_host Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
165 create_host="$create_host Update_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
166 create_host="$create_host Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
167 create_host="$create_host Create_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
168 create_host="$create_host Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
169 create_host="$create_host Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
170 create_host="$create_host References_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
171 create_host="$create_host Index_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
172 create_host="$create_host Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
173 create_host="$create_host PRIMARY KEY Host (Host,Db)"
174 create_host="$create_host );"
177 create_user="$create_user CREATE TABLE user ("
178 create_user="$create_user Host char(60) DEFAULT '' NOT NULL, "
179 create_user="$create_user User char(16) DEFAULT '' NOT NULL, "
180 create_user="$create_user Password char(16) DEFAULT '' NOT NULL, "
181 create_user="$create_user Select_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
182 create_user="$create_user Insert_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
183 create_user="$create_user Update_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
184 create_user="$create_user Delete_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
185 create_user="$create_user Create_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
186 create_user="$create_user Drop_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
187 create_user="$create_user Reload_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
188 create_user="$create_user Shutdown_priv enum('N','Y') DEFAULT 'N' NOT NULL,"
189 create_user="$create_user Process_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
190 create_user="$create_user File_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
191 create_user="$create_user Grant_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
192 create_user="$create_user References_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
193 create_user="$create_user Index_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
194 create_user="$create_user Alter_priv enum('N','Y') DEFAULT 'N' NOT NULL, "
195 create_user="$create_user PRIMARY KEY Host (Host,User)"
196 create_user="$create_user );"
199 create_func="$create_func CREATE TABLE func ( "
200 create_func="$create_func name char(64) DEFAULT '' NOT NULL, "
201 create_func="$create_func ret tinyint(1) DEFAULT '0' NOT NULL,"
202 create_func="$create_func dl char(128) DEFAULT '' NOT NULL, "
203 create_func="$create_func type enum ('function','aggregate') NOT NULL, "
204 create_func="$create_func PRIMARY KEY (name)"
205 create_func="$create_func ); "
208 create_tblpriv="$create_tblpriv CREATE TABLE tables_priv ( "
209 create_tblpriv="$create_tblpriv Host char(60) DEFAULT '' NOT NULL, "
210 create_tblpriv="$create_tblpriv Db char(60) DEFAULT '' NOT NULL, "
211 create_tblpriv="$create_tblpriv User char(16) DEFAULT '' NOT NULL,"
212 create_tblpriv="$create_tblpriv Table_name char(60) DEFAULT '' NOT NULL, "
213 create_tblpriv="$create_tblpriv Grantor char(77) DEFAULT '' NOT NULL, "
214 create_tblpriv="$create_tblpriv Timestamp timestamp(14), "
215 create_tblpriv="$create_tblpriv Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') DEFAULT '' NOT NULL, "
216 create_tblpriv="$create_tblpriv Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL,"
217 create_tblpriv="$create_tblpriv PRIMARY KEY (Host,Db,User,Table_name), "
218 create_tblpriv="$create_tblpriv KEY Grantor (Grantor)"
219 create_tblpriv="$create_tblpriv );"
222 create_colpriv="$create_colpriv CREATE TABLE columns_priv ( "
223 create_colpriv="$create_colpriv Host char(60) DEFAULT '' NOT NULL, "
224 create_colpriv="$create_colpriv Db char(60) DEFAULT '' NOT NULL, "
225 create_colpriv="$create_colpriv User char(16) DEFAULT '' NOT NULL, "
226 create_colpriv="$create_colpriv Table_name char(60) DEFAULT '' NOT NULL, "
227 create_colpriv="$create_colpriv Column_name char(60) DEFAULT '' NOT NULL, "
228 create_colpriv="$create_colpriv Timestamp timestamp(14), "
229 create_colpriv="$create_colpriv Column_priv set('Select','Insert','Update','References') DEFAULT '' NOT NULL, "
230 create_colpriv="$create_colpriv PRIMARY KEY (Host,Db,User,Table_name,Column_name)"
231 create_colpriv="$create_colpriv );"
232 if /usr/sbin/mysqld --bootstrap --skip-grant-tables \
233 --datadir=$MYSQL_DATA_DIR --user=$MYSQL_USER << END_OF_DATA
234 CREATE DATABASE mysql;
244 #INSERT INTO db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y');
245 #INSERT INTO db VALUES ('%','test\_%','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y');
246 INSERT INTO user VALUES ('localhost','mysql_logrotate','','N','N','N','N','N','N','Y','N','N','N','N','N','N','N');
247 INSERT INTO user VALUES ('localhost','mysql','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
248 INSERT INTO user VALUES ('$hostname','mysql','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
249 REPLACE INTO user VALUES ('localhost','mysql','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
250 REPLACE INTO user VALUES ('$hostname','mysql','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
257 PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL USERS!"
259 /usr/bin/mysqladmin -u mysql password 'password'
260 /usr/bin/mysqladmin -u mysql_logrotate password 'password'
261 NOTE: mysql_logrotate password should be placed to /etc/mysqld.conf in mysqladmin section
262 See the manual for more instructions.
269 Installation of grant tables FAILED!
271 Examine the logs in $MYSQL_DATA_DIR for more information. You can
272 also try to start the mysqld demon with:
274 /usr/sbin/mysqld --skip-grant &
276 You can use the command line tool /usr/bin/mysql to connect to the mysql
277 database and look at the grant tables:
279 shell> /usr/bin/mysql -u mysql mysql
282 Try 'mysqld --help' if you have problems with paths. Setting on
283 logging in /etc/mysqld.conf gives you a log in /var/log/mysql/log that
284 may be helpful. The latest information about MySQL is available on the
285 web at <http://www.mysql.com>.
287 Please check PLD ftp site for newer versions of this package.
289 Please consult the MySQL manual section: 'Problems running
290 mysql_install_db', and the manual section that describes problems on
291 your OS. Another information source is the MySQL email archive.
292 Please check all of the above before mailing us! And if you do mail
293 us, you MUST use the /usr/bin/mysqlbug script!
302 msg_Usage "$0 {start|stop|status|restart|reload|init}"