- #!/bin/bash
- #mysql 启动脚本
- #安装路径:/usr/local/mysql
- #pid_file=/var/run/mysql/3306/mysql.pid
- #config=/etc/mysql/3306/my.cnf
- #Author=ftqzy
- #Modified=2011-11-11
- #Version=1.0
- # Source function library.
- . /etc/rc.d/init.d/functions
- # Source networking configuration.
- . /etc/sysconfig/network
- prog="MySQL"
- get_mysql_option(){
- result=`/usr/local/mysql/bin/my_print_defaults "$1" --defaults-file=/etc/mysql/3306/my.cnf | sed -n "s/^--$2=//p" | tail -n 1`
- if [ -z "$result" ]; then
- # not found, use default
- result="$3"
- fi
- }
- get_mysql_option mysqld datadir "/var/mysql/3306/data"
- datadir="$result"
- get_mysql_option mysqld socket "/tmp/mysql.sock"
- socketfile="$result"
- get_mysql_option mysqld log-error "/var/log/mysql/3306/mysql_error.log"
- errlogfile="$result"
- get_mysql_option mysqld pid-file "/var/run/mysql/3306/mysql.pid"
- mypidfile="$result"
- start(){
- if [ ! -f $errlogfile ];then
- touch "$errlogfile"
- chown mysql:mysql "$errlogfile"
- chmod 0640 "$errlogfile"
- fi
- if [ ! -d "$datadir" ] ; then
- action $"Initializing MySQL database: " /usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql --datadir="$datadir" --user=mysql
- ret=$?
- chown -R mysql:mysql "$datadir"
- if [ $ret -ne 0 ] ; then
- return $ret
- fi
- fi
- chown mysql:mysql "$datadir"
- chmod 0755 "$datadir"
- /usr/local/mysql/bin/mysqld_safe --datadir="$datadir" --socket="$socketfile" \
- --log-error="$errlogfile" --pid-file="$mypidfile" \
- --user=mysql >/dev/null 2>&1 &
- ret=$?
- if [ $ret -eq 0 ]; then
- STARTTIMEOUT=30
- while [ $STARTTIMEOUT -gt 0 ]; do
- RESPONSE=`/usr/local/mysql/bin/mysqladmin --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1` && break
- echo "$RESPONSE" | grep -q "Access denied for user" && break
- sleep 1
- let STARTTIMEOUT=${STARTTIMEOUT}-1
- done
- if [ $STARTTIMEOUT -eq 0 ]; then
- echo "Timeout error occurred trying to start MySQL Daemon."
- action $"Starting $prog: " /bin/false
- ret=1
- else
- action $"Starting $prog: " /bin/true
- fi
- else
- action $"Starting $prog: " /bin/false
- fi
- [ $ret -eq 0 ] && touch /var/lock/subsys/mysqld
- return $ret
- }
- stop(){
- MYSQLPID=`cat "$mypidfile" 2>/dev/null `
- if [ -n "$MYSQLPID" ]; then
- /bin/kill "$MYSQLPID" >/dev/null 2>&1
- ret=$?
- if [ $ret -eq 0 ]; then
- STOPTIMEOUT=60
- while [ $STOPTIMEOUT -gt 0 ]; do
- /bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break
- sleep 1
- let STOPTIMEOUT=${STOPTIMEOUT}-1
- done
- if [ $STOPTIMEOUT -eq 0 ]; then
- echo "Timeout error occurred trying to stop MySQL Daemon."
- ret=1
- action $"Stopping $prog: " /bin/false
- else
- rm -f /var/lock/subsys/mysqld
- rm -f "$socketfile"
- action $"Stopping $prog: " /bin/true
- fi
- else
- action $"Stopping $prog: " /bin/false
- fi
- else
- ret=1
- action $"Stopping $prog: " /bin/false
- fi
- return $ret
- }
- restart(){
- stop
- start
- }
- condrestart(){
- [ -e /var/lock/subsys/mysqld ] && restart || :
- }
- # See how we were called.
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- status)
- status mysqld
- ;;
- restart)
- restart
- ;;
- condrestart)
- condrestart
- ;;
- *)
- echo $"Usage: $0 {start|stop|status|condrestart|restart}"
- exit 1
- esac
- exit $?
- # Comments to support chkconfig on RedHat Linux
- # chkconfig: 2345 90 90
- # description:mysql server