mysql自己编写启停脚本

时间:2022-11-12 19:31:38

一、场景

  在实际生产环境中要求相对较高的企业对于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:***@qq.com #
# qqinfo:*** #
# This is a script about Mysq startup and stop #
# version:1.1 #
###################################################
. /etc/init.d/functions
port=
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 >& >/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 ;
[ -eq $? ]&& action "stop Mysql." /bin/true
fi
}
case $ in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
status)
function_status_mysql
;;
restart)
function_stop_mysql
sleep ;
function_start_mysql
;;
*)
echo "USAG:start|stop|restart|status"
;;
esac

/iddb/mysld_start

  脚本使用方法:

  在普通用户下使用  sh  /iddb/mysql_start   start|stop|restart|status 可实现启停和状态查询

  也可在授权/iddb/mysql_start 为可执行及755情况下 使用/iddb/mysql_start   start|stop|restart|status实现启停和状态查询