一、场景
在实际生产环境中要求相对较高的企业对于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实现启停和状态查询
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!