Steward_Xu

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、场景

  在实际生产环境中要求相对较高的企业对于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
/iddb/mysld_start

  脚本使用方法:

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

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

posted on 2017-08-30 14:45  Steward_Xu  阅读(2205)  评论(0编辑  收藏  举报