一、場景
在實際生產環境中要求相對較高的企業對於root權限管控相對比較高,故而很多軟件並非安裝在root用戶下(當然root用戶權限也可管理,但正常情況下root權限並不會給業務使用方,而會給一個普通賬戶權限,例如mysql安裝在普通用戶下,普通用戶只能操作用戶下的權限。對於安裝在普通用戶下的mysql或者在root用戶下安裝了多實例的對於管理尤其是啟停則不能使用mysql自帶的mysqld start|stop|restart等進行啟停,root用戶則可以(注:root用戶下自定義安裝mysql則需要修改MySQLd 文件詳細參考另外一篇博文:http://www.cnblogs.com/Steward-Xu/p/6991385.html))
如果mysql安裝至普通用戶下如何啟停mysql?
二、使用非腳本方式及手工執行mysql命令實現啟動、停止。
1、啟動方法:使用mysqld_safe --defaults-file=/data/mysql/my.cnf
2、停止方法:mysqladmin -u root -p'數據庫密碼' -S $mysql_sock shutdown 這是mysql官方推介使用的停止方式
或者采用kill 進程號(不采用kill -9)在使用kill 前必須ps -ef | grep mysql 找到進程再用kill 停止進程。(Mysql 自帶的腳本mysqld采用的是kill 進程方式停止)
3、重啟方法:必須先停止shutdown或者kill mysql進程才能使用mysqld_safe --defaults-file=/data/mysql/my.cnf
4、Mysql是否啟動狀態查看只能用ps -ef | grep mysql 查看是否有進程存在,有則表示mysql運行;無則表示mysql沒有運行。
三、腳本實現:
#!/bin/sh ################################################### # this script is created by xuxuedong. # # e_mail:365***746@qq.com # # qqinfo:365***746 # # This is a script about Mysq startup and stop # # version:1.1 # ################################################### . /etc/init.d/functions port=3307 mysql_user="root" mysql_pwd="xuxuedong" CmdPath="/iddb/mysql3307/bin" mysql_sock="/iddb/${port}data/mysql.sock" ####start . /etc/init.d/functions function_start_mysql() { if [ ! -e "$mysql_sock" ] then action "starting Mysql...." /bin/true /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/iddb/mysql3307/my.cnf 2>&1 >/dev/null & else action "started Mysql." /bin/true exit fi } function_status_mysql() { if [ ! -e "$mysql_sock" ] then echo " mysql is running!!!" else echo " mysql is not running!!!" exit fi } #####stop function_stop_mysql() { if [ ! -e "$mysql_sock" ] then action "stoped Mysql...." /bin/true else ${CmdPath}/mysqladmin -u ${mysql_user} -p'xuxuedong' -S $mysql_sock shutdown sleep 5; [ 0 -eq $? ]&& action "stop Mysql." /bin/true fi } case $1 in start) function_start_mysql ;; stop) function_stop_mysql ;; status) function_status_mysql ;; restart) function_stop_mysql sleep 3; function_start_mysql ;; *) echo "USAG:start|stop|restart|status" ;; esac
腳本使用方法:
在普通用戶下使用 sh /iddb/mysql_start start|stop|restart|status 可實現啟停和狀態查詢
也可在授權/iddb/mysql_start 為可執行及755情況下 使用/iddb/mysql_start start|stop|restart|status實現啟停和狀態查詢
