一、场景
在实际生产环境中要求相对较高的企业对于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实现启停和状态查询