Linux 环境下如何使用 systemd 管理 MySQL 8.0 服务启动停止

文章导读
在 Linux 环境下,使用 systemd 管理 MySQL 8.0 服务最推荐的方式是通过 systemctl 命令调用 mysqld 或 mysql 服务单元,适用于大多数基于 systemd 的现代发行版如 CentOS 7+ 和 Ubuntu 16.04+。操作前需确认服务单元名称,避免误停正在写入数据的服务导致事务中断。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 常见问题
  7. G 参考来源
A A

在 Linux 环境下,使用 systemd 管理 MySQL 8.0 服务最推荐的方式是通过 systemctl 命令调用 mysqld 或 mysql 服务单元,适用于大多数基于 systemd 的现代发行版如 CentOS 7+ 和 Ubuntu 16.04+。操作前需确认服务单元名称,避免误停正在写入数据的服务导致事务中断。

先说结论:systemd 是管理 MySQL 8.0 服务的标准工具,通过 systemctl 命令可实现服务的启动、停止和开机自启。

  • 适合:使用 CentOS 7+、Ubuntu 16.04+、Debian 8+ 等搭载 systemd 的 Linux 发行版。
  • 先看:确认 MySQL 安装方式,官方 yum/apt 源安装通常自动注册服务,源码编译需手动配置。
  • 建议:生产环境停止服务前检查主从状态和事务日志,避免数据不一致。

命令速用版

以下命令需在拥有 sudo 权限的终端执行,服务名称可能是 mysqld 或 mysql,需根据实际发行版调整。

Linux 环境下如何使用 systemd 管理 MySQL 8.0 服务启动停止
systemctl start mysqld      # 启动服务
systemctl stop mysqld       # 停止服务
systemctl restart mysqld    # 重启服务
systemctl status mysqld     # 查看状态
systemctl enable mysqld     # 设置开机自启

为什么会这样

systemd 是 Linux 系统的初始化系统,MySQL 8.0 安装包默认会注册 systemd 服务单元文件。

MySQL 官方提供的二进制包或通过系统包管理器安装的版本,会在安装过程中自动创建/usr/lib/systemd/system/mysqld.service 文件。systemd 负责监听该单元文件,并根据指令向 MySQL 进程发送标准信号,实现进程守护和日志收集。

Linux 环境下如何使用 systemd 管理 MySQL 8.0 服务启动停止

分步处理

  1. 确认服务单元名称:执行 systemctl list-unit-files | grep mysql 查看服务名是 mysqld 还是 mysql。
  2. 执行启动或停止:根据上一步确认的名称,使用 systemctl start 或 stop 命令操作。
  3. 配置开机自启:若需服务器重启后自动运行,执行 systemctl enable 服务名。
  4. 检查依赖项:若启动失败,检查 network-online.target 等依赖是否满足。

怎么验证是否生效

  • 状态检查:systemctl status 服务名 显示 active (running) 即为正常。
  • 端口监听:使用 ss -tlnp | grep 3306 确认 3306 端口处于监听状态。
  • 日志确认:查看 journalctl -u 服务名 或/var/log/mysqld.log 无报错信息。
  • 连接测试:使用 mysql -u root -p 能成功登录数据库。

常见坑

  • 服务名混淆:CentOS/RHEL 通常为 mysqld,Ubuntu/Debian 通常为 mysql,混用会导致 Failed to find unit 错误。
  • 权限不足:未加 sudo 直接执行 systemctl 会报 Permission denied。
  • 强制杀进程:避免使用 kill -9 强制停止,应通过 systemctl stop 让 MySQL 正常刷盘关闭。
  • 配置文件冲突:修改/etc/my.cnf 后未重启服务,配置不生效。

常见问题

systemctl 提示 Unit not found 怎么办

说明 MySQL 未通过包管理器安装或未注册 systemd 服务,需重新安装官方 rpm/deb 包或手动创建 service 文件。

Linux 环境下如何使用 systemd 管理 MySQL 8.0 服务启动停止

停止服务后端口仍然占用是什么原因

可能是 MySQL 进程未完全退出或有僵尸进程,使用 ps -ef | grep mysql 检查并清理残留进程。

如何查看 MySQL 服务的启动日志

使用 journalctl -u mysqld -f 命令实时查看 systemd 捕获的 MySQL 启动日志。

参考来源

  • MySQL Official Documentation: Starting and Stopping the Server, https://dev.mysql.com/doc/refman/8.0/en/starting-server.html
  • systemd Documentation: systemctl, https://www.freedesktop.org/software/systemd/man/systemctl.html