在Linux系统中关闭MySQL服务是运维工作中常见的操作,需要根据系统使用的初始化系统和服务管理工具选择对应的操作方式,错误的关闭方式可能导致未提交的事务丢失或者数据文件损坏。

确认MySQL服务名称
不同Linux发行版或者MySQL安装方式对应的服务名称可能不同,常见的服务名有mysql和mysqld,可以先通过以下命令确认当前系统的MySQL服务名:
# 查看系统中所有包含mysql的服务 systemctl list-unit-files | grep mysql # 或者尝试查看mysql服务状态,如果提示不存在再尝试mysqld systemctl status mysql
使用systemctl关闭MySQL(适用于Systemd系统)
目前主流的Linux发行版如CentOS 7及以上、Ubuntu 16.04及以上都默认使用Systemd作为初始化系统,对应的服务管理工具是systemctl,关闭MySQL的命令如下:
停止MySQL服务
# 假设服务名为mysqld,根据实际查到的服务名替换 sudo systemctl stop mysqld
禁止开机自启(可选)
如果不需要MySQL开机自动启动,可以执行以下命令关闭自启:
sudo systemctl disable mysqld
验证关闭结果
执行以下命令查看服务状态,确认MySQL已经停止:
systemctl status mysqld # 输出中应该包含inactive (dead)字样,说明服务已经停止
使用service关闭MySQL(适用于SysVinit系统)
部分较旧的Linux发行版如CentOS 6、Ubuntu 14.04等使用SysVinit作为初始化系统,对应的服务管理工具是service,关闭命令如下:
# 服务名可能是mysql或者mysqld,根据实际替换 sudo service mysqld stop
验证服务是否停止:
sudo service mysqld status
通过MySQL命令关闭服务
如果拥有MySQL的root权限,也可以登录到MySQL终端执行关闭命令,这种方式会先完成所有事务的提交和日志刷盘,相对更安全:
-- 登录MySQL mysql -u root -p -- 输入密码后执行关闭命令 SHUTDOWN;
如果使用的是较旧的MySQL版本,没有SHUTDOWN命令权限,也可以执行以下命令:
-- 使用mysqladmin工具关闭,需要输入root密码 mysqladmin -u root -p shutdown
关闭过程中的常见问题
- 如果执行关闭命令提示权限不足,需要在命令前添加
sudo获取管理员权限 - 如果关闭命令执行后长时间没有响应,可能是有长事务正在运行,可以登录MySQL查看正在执行的事务,等待事务完成后再尝试关闭
- 如果强制关闭MySQL进程导致启动失败,需要检查数据目录下的错误日志,通常位于
/var/log/mysqld.log或者MySQL数据目录下的hostname.err文件,修复错误后再启动服务
| 系统类型 | 服务管理工具 | 关闭命令示例 |
|---|---|---|
| Systemd系统(CentOS7+、Ubuntu16.04+) | systemctl | sudo systemctl stop mysqld |
| SysVinit系统(CentOS6、Ubuntu14.04) | service | sudo service mysqld stop |
| 任意系统(需MySQL权限) | mysqladmin | mysqladmin -u root -p shutdown |