Linux下MySQL服务的启动、停止与重启命令详解
在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 或连接被拒。
原因分析:
- MySQL服务未启动。 2.
my.cnf 配置中 socket 路径与实际不匹配。
3. 权限问题导致进程意外退出。
解决步骤:
- 检查服务状态:确认进程是否存在。
ps -ef | grep mysqld - 定位Socket文件:通常位于
/var/lib/mysql/或/tmp/下。若服务正在运行但不在/tmp,请使用绝对路径或建立软链接。 - 修正权限:若因目录属于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故障排查的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









