1. #!/bin/bash 
  2. #mysql 启动脚本 
  3. #安装路径:/usr/local/mysql 
  4. #pid_file=/var/run/mysql/3306/mysql.pid 
  5. #config=/etc/mysql/3306/my.cnf 
  6. #Author=ftqzy 
  7. #Modified=2011-11-11 
  8. #Version=1.0 
  9.  
  10. # Source function library. 
  11. . /etc/rc.d/init.d/functions 
  12.  
  13. # Source networking configuration. 
  14. . /etc/sysconfig/network 
  15.  
  16.  
  17. prog="MySQL" 
  18.  
  19. get_mysql_option(){ 
  20.         result=`/usr/local/mysql/bin/my_print_defaults "$1" --defaults-file=/etc/mysql/3306/my.cnf | sed -n "s/^--$2=//p" | tail -n 1` 
  21.         if [ -z "$result" ]; then 
  22.             # not found, use default 
  23.             result="$3" 
  24.         fi 
  25.  
  26. get_mysql_option mysqld datadir "/var/mysql/3306/data" 
  27. datadir="$result" 
  28. get_mysql_option mysqld socket "/tmp/mysql.sock" 
  29. socketfile="$result" 
  30. get_mysql_option mysqld log-error "/var/log/mysql/3306/mysql_error.log" 
  31. errlogfile="$result" 
  32. get_mysql_option mysqld pid-file "/var/run/mysql/3306/mysql.pid" 
  33. mypidfile="$result" 
  34.  
  35. start(){ 
  36.         if [ ! -f $errlogfile ];then 
  37.         touch "$errlogfile" 
  38.         chown mysql:mysql "$errlogfile"  
  39.         chmod 0640 "$errlogfile" 
  40.     fi  
  41.  
  42.         if [ ! -d "$datadir" ] ; then 
  43.             action $"Initializing MySQL database: " /usr/local/mysql/bin/mysql_install_db --basedir=/usr/local/mysql --datadir="$datadir" --user=mysql 
  44.             ret=$? 
  45.             chown -R mysql:mysql "$datadir" 
  46.             if [ $ret -ne 0 ] ; then 
  47.                 return $ret 
  48.             fi 
  49.         fi 
  50.         chown mysql:mysql "$datadir" 
  51.         chmod 0755 "$datadir" 
  52.  
  53.         /usr/local/mysql/bin/mysqld_safe   --datadir="$datadir" --socket="$socketfile" \ 
  54.                 --log-error="$errlogfile" --pid-file="$mypidfile" \ 
  55.                 --user=mysql >/dev/null 2>&1 & 
  56.         ret=$? 
  57.  
  58.         if [ $ret -eq 0 ]; then 
  59.             STARTTIMEOUT=30 
  60.             while [ $STARTTIMEOUT -gt 0 ]; do 
  61.                 RESPONSE=`/usr/local/mysql/bin/mysqladmin --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1` && break 
  62.                 echo "$RESPONSE" | grep -q "Access denied for user" && break 
  63.                 sleep 1 
  64.                 let STARTTIMEOUT=${STARTTIMEOUT}-1 
  65.             done 
  66.             if [ $STARTTIMEOUT -eq 0 ]; then 
  67.                     echo "Timeout error occurred trying to start MySQL Daemon." 
  68.                     action $"Starting $prog: " /bin/false 
  69.                     ret=1 
  70.             else 
  71.                     action $"Starting $prog: " /bin/true 
  72.             fi 
  73.         else 
  74.             action $"Starting $prog: " /bin/false 
  75.         fi 
  76.         [ $ret -eq 0 ] && touch /var/lock/subsys/mysqld 
  77.         return $ret 
  78.  
  79. stop(){ 
  80.         MYSQLPID=`cat "$mypidfile"  2>/dev/null ` 
  81.         if [ -n "$MYSQLPID" ]; then 
  82.             /bin/kill "$MYSQLPID" >/dev/null 2>&1 
  83.             ret=$? 
  84.             if [ $ret -eq 0 ]; then 
  85.                 STOPTIMEOUT=60 
  86.                 while [ $STOPTIMEOUT -gt 0 ]; do 
  87.                     /bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break 
  88.                     sleep 1 
  89.                     let STOPTIMEOUT=${STOPTIMEOUT}-1 
  90.                 done 
  91.                 if [ $STOPTIMEOUT -eq 0 ]; then 
  92.                     echo "Timeout error occurred trying to stop MySQL Daemon." 
  93.                     ret=1 
  94.                     action $"Stopping $prog: " /bin/false 
  95.                 else 
  96.                     rm -f /var/lock/subsys/mysqld 
  97.                     rm -f "$socketfile" 
  98.                     action $"Stopping $prog: " /bin/true 
  99.                 fi 
  100.             else 
  101.                 action $"Stopping $prog: " /bin/false 
  102.             fi 
  103.         else 
  104.             ret=1 
  105.             action $"Stopping $prog: " /bin/false 
  106.         fi 
  107.         return $ret 
  108.   
  109. restart(){ 
  110.     stop 
  111.     start 
  112.  
  113. condrestart(){ 
  114.     [ -e /var/lock/subsys/mysqld ] && restart || : 
  115.  
  116. # See how we were called. 
  117. case "$1" in 
  118.   start) 
  119.     start 
  120.     ;; 
  121.   stop) 
  122.     stop 
  123.     ;; 
  124.   status) 
  125.     status mysqld 
  126.     ;; 
  127.   restart) 
  128.     restart 
  129.     ;; 
  130.   condrestart) 
  131.     condrestart 
  132.     ;; 
  133.   *) 
  134.     echo $"Usage: $0 {start|stop|status|condrestart|restart}" 
  135.     exit 1 
  136. esac 
  137.  
  138. exit $? 
  139. # Comments to support chkconfig on RedHat Linux 
  140. # chkconfig: 2345 90 90 
  141. # description:mysql server