]> git.pld-linux.org Git - packages/mysql.git/blob - mysql.init
- added /etc/mysqld.conf usage instead of mysqld switches
[packages/mysql.git] / mysql.init
1 #!/bin/sh
2 #
3 # mysql         A very fast and reliable SQL database engine
4 #
5 # chkconfig:    2345 90 25
6 #
7 # description:  A very fast and reliable SQL database engine.
8 #
9 # pidfile:      /var/lib/mysql/mysqld.pid
10
11 # Source function library
12 . /etc/rc.d/init.d/functions
13
14 # Get network config
15 . /etc/sysconfig/network
16
17 # Check that networking is up.
18 if is_no "${NETWORKING}"; then
19         msg_Network_Down MySQL
20         exit 1
21 fi
22
23 MYSQLD_ERRLOG=/var/log/mysql/err
24 MYSQLD_CONFIG=/etc/mysqld.conf 
25
26 # Get service config
27 if [ -f /etc/sysconfig/mysql ] ; then
28         . /etc/sysconfig/mysql
29 fi
30
31 # Daemon don't dies if config doesn't exists
32 if [ ! -f $MYSQLD_CONFIG ]; then 
33     echo "MySQL config $MYSQLD_CONFIG not exists"
34     exit 1
35 fi
36
37 if [ ! -f $MYSQLD_CONFIG ]; then 
38     echo "MySQL config $MYSQLD_CONFIG not exists"
39     exit 1
40 fi
41
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:]'`
45
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."
49     exit 1
50 fi
51
52 if [ -z $MYSQL_USER ]; then 
53     echo "MySQL user not configured propely!"
54     echo "Edit $MYSQLD_CONFIG and configure it."
55     exit 1
56 fi
57
58
59 case "$1" in
60     start)
61         if [ ! -d "$MYSQL_DATA_DIR/mysql" ]; then
62                 echo "MySQL database not initialized. Try \"$0 init\" before start."
63                 exit 1
64         fi
65
66         # Check if the service is already running?              
67         if [ -f /var/lock/subsys/mysql ]; then
68                 msg_Already_Running MySQL
69         else    
70                 msg_starting MySQL
71                 busy
72                 
73                 if [ ! -f $MYSQLD_ERRLOG ]; then 
74                     touch $MYSQLD_ERRLOG
75                 fi
76                 chown mysql.mysql $MYSQLD_ERRLOG
77                 chmod 640 $MYSQLD_ERRLOG
78                     
79                 /usr/sbin/mysqld --defaults-file=$MYSQLD_CONFIG >>$MYSQLD_ERRLOG 2>&1 &
80                 sleep 1
81                 deltext
82                 if ps -C mysqld >/dev/null 2>&1; then
83                         RETVAL=0
84                         ok
85                 else
86                         RETVAL=1
87                         fail
88                 fi
89                 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mysql
90         fi
91         ;;
92   stop)
93         if [ -f /var/lock/subsys/mysql ]; then
94                 msg_stopping MySQL
95                 killproc mysqld
96                 sleep 1
97                 rm -f /var/lock/subsys/mysql $MYSQLD_PIDFILE >/dev/null 2>&1
98         else
99                 msg_Not_Running MySQL
100                 exit 1
101         fi
102         ;;
103   status)
104         status mysqld
105         exit $?
106         ;;
107   restart|reload)
108         $0 stop
109         $0 start
110         ;;
111   init)
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."
116             exit 1;
117         fi
118
119         show "Creating privilege mysql tables"
120         busy
121         TMP=/tmp TMPDIR=/tmp 
122         hostname=`hostname | tr -d '[:space:]'` # Install this too in the user table
123                 
124         # Check if hostname is valid
125         if [ -z "$hostname" ]; then
126                 deltext
127                 fail
128                 echo "Sorry, the host name is not configured."
129                 echo "Please configure the 'hostname' command to return a hostname."
130                 exit 1
131         elif ! hostname -i >/dev/null 2>&1; then 
132                 deltext
133                 fail
134                 echo "Sorry, the host '$hostname' could not be looked up."
135                 echo "Please configure the 'hostname' command to return a correct hostname."
136                 exit 1
137         fi
138
139         #mysqld --bootstrap need whole (and only one) sql command in one line
140         create_db=""
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 );"
158
159         create_host=""
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       );"
175
176         create_user=""
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 );"
197
198         create_func=""
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 ); "
206
207         create_tblpriv=""
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 );"
220
221         create_colpriv=""
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;    
235 use mysql;
236 $create_db
237 $inser_db
238 $create_host
239 $create_user
240 $insert_user
241 $create_func
242 $create_tblpriv
243 $create_colpriv
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');
251 END_OF_DATA
252
253         then 
254             deltext
255             ok
256             cat << END_OF_MSG
257 PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL USERS!"
258 This is done with:
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.
263
264 END_OF_MSG
265       else  
266             deltext
267             fail
268             cat << END_OF_MSG
269 Installation of grant tables FAILED!
270
271 Examine the logs in $MYSQL_DATA_DIR for more information.  You can
272 also try to start the mysqld demon with:
273
274 /usr/sbin/mysqld --skip-grant &
275
276 You can use the command line tool /usr/bin/mysql to connect to the mysql
277 database and look at the grant tables:
278
279 shell> /usr/bin/mysql -u mysql mysql
280 mysql> show tables
281
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>.
286
287 Please check PLD ftp site for newer versions of this package.
288
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!  
294
295 END_OF_MSG
296
297         exit 1 
298     fi
299
300         ;;
301   *)
302         msg_Usage "$0 {start|stop|status|restart|reload|init}"
303         exit 1
304         ;;
305 esac
306
307 exit $RETVAL
This page took 0.804366 seconds and 4 git commands to generate.