Linux下MySQL服务的启动、停止与重启命令详解

Evan
Evan
发布时间:2026-10-13| 6人浏览过
原创

在Linux环境中管理MySQL服务是系统运维的基础技能。本文整理了通过service/systemctl命令以及直接调用守护进程进行启动、停止和重启的标准操作,并深入解析了手动编译安装MySQL时遇到的SOCKET连接失败、进程名混淆及权限拒绝等典型故障的排查思路。

一、 MySQL服务的标准控制操作

在现代Linux发行版(如CentOS 7+、Ubuntu 16.04+)中,推荐使用 systemctl 或兼容的 service 命令管理服务。这些命令会自动处理依赖项、日志记录和状态同步。

第1步:启动MySQL服务

目的:开启数据库服务,使其接受外部连接。

操作:

  • 使用 systemctl(推荐):
    sudo systemctl start mysqld
    # 或者在某些版本中为 mysql.service
  • 使用 service(传统SysV方式):
    sudo service mysqld start

完成状态:执行后无报错返回,可通过 systemctl status mysqld 查看绿色 active (running) 状态。

第2步:停止MySQL服务

目的:安全关闭数据库,刷新缓冲区数据到磁盘。

操作:

  • 使用 systemctl:
    sudo systemctl stop mysqld
  • 使用 service:
    sudo service mysqld stop
  • 使用 mysqladmin(需认证):
    sudo mysqladmin -u root -p shutdown

第3步:重启MySQL服务

目的:应用配置更改(如 my.cnf 修改)或恢复服务异常。

操作:

  • sudo systemctl restart mysqld
    # 或者
  • sudo service mysqld restart

二、 源码安装或非标准路径下的手动控制

当MySQL是通过 tar.gz 包解压至 /usr/local/mysql 等非默认目录安装时,系统服务脚本可能无法自动识别,需要直接调用二进制文件。

第1步:使用mysqld_safe启动后台服务

入口:MySQL安装目录下的bin文件夹。

动作:

/usr/local/mysql/bin/mysqld_safe --user=mysql &

参数说明:

  • --user=mysql:指定运行MySQL进程的系统用户,出于安全考虑建议非root。
  • &:将进程放入后台运行,释放当前终端。

注意:不要直接使用 ./mysqld --user=mysql,因为如果出错前台会阻塞且失去控制,mysqld_safe 是一个守护进程包装器,具有自动重启和日志追踪能力。

第2步:通过Socket直接管理或连接

目的:在无法启动服务时重置密码或验证连接。

操作:

/usr/local/mysql/bin/mysqladmin -u root -S /var/lib/mysql/mysql.sock password '新密码'

如果连接超时找不到socket文件,可以尝试创建软链接指向实际存在的socket文件:

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

三、 常见故障排查与诊断

故障1:ERROR 2002: Can't connect to local MySQL server through socket

现象:客户端无法找到 /tmp/mysql.sock 或连接被拒。

原因分析:

  1. MySQL服务未启动。
  2. 2. my.cnf 配置中 socket 路径与实际不匹配。 3. 权限问题导致进程意外退出。

解决步骤:

  1. 检查服务状态:确认进程是否存在。
    ps -ef | grep mysqld
  2. 定位Socket文件:通常位于 /var/lib/mysql/ 或 /tmp/ 下。若服务正在运行但不在 /tmp,请使用绝对路径或建立软链接。
  3. 修正权限:若因目录属于root导致普通用户启动失败,请确保数据目录 datadir 的所有权正确:
    chown -R mysql:mysql /usr/local/mysql/data

故障2:进程启动后立即停止(PID file error)

现象:日志中出现 STOPPING server from pid file 或 mysqld ended。

原因:通常是配置文件错误、磁盘空间不足或数据文件损坏。

排查:

  • 查看错误日志(通常在 /var/log/mysqld.log 或数据目录下的 .err 文件),这是最准确的排错依据。
  • 避免混用 safe_mysqld 和 mysqld_safe。在新版MySQL中,应统一使用 mysqld_safe,旧版的 safe_mysqld 可能是废弃组件。

诊断工具:如何确认MySQL已就绪

检查进程:

ps aux | grep mysqld

正常应有多个 mysqld 子进程或线程,且属主为 mysql。

检查端口监听:

netstat -tlpn | grep mysql
# 或者使用 ss 命令

输出应包含 :3306 的 LISTEN 状态,表明服务已接受网络请求。

四、 总结

掌握Linux下MySQL的服务管理核心在于理解系统服务层(systemctl/service)与底层二进制(mysqld/mysqld_safe)的关系。日常维护优先使用 systemctl 以保证规范性和可追溯性;在源码编译场景下,务必关注 socket 路径一致性与数据目录权限。遇到连接异常时,优先查阅错误日志而非盲目重试命令。

以上就是Linux下启动、重启和停止MySQL命令的详细内容,更多关于MySQL故障排查的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。