服务器重启后mysql5.7启动失败问题
昨天安装成功的mysql5.7服务器,重启后发现mysql启动失败。
查看错误日志
从错误日志中,看到了报错信息:
[ERROR] Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock.
[ERROR] Unable to setup unix socket lock file.
表明MySQL无法在`/var/run/mysqld/`目录下创建套接字锁文件。
查看发现/var/run/目录下没有mysqld目录
尝试创建目录并设置权限
#mkdir -p /var/run/mysqld
#chown -R mysql:mysql /var/run/mysqld
#chmod -R 755 /var/run/mysqld
重启mysql服务
#systemctl restart mysql
服务启动成功。
但是再次重启服务器后,问题又出现。
查询后发现/var/run是临时文件系统,重启后会被清空,需要设置一个机制在每次启动时自动创建该目录并设置权限。
1. 创建 systemd tmpfiles 配置
#echo 'd /var/run/mysqld 0755 mysql mysql -' | sudo tee /etc/tmpfiles.d/mysql.conf
立即应用配置
# systemd-tmpfiles --create
2. 修改 MySQL systemd 服务文件
# vi /etc/systemd/system/mysql.service
添加以下内容到 [Service] 部分:
ExecStartPre=/bin/mkdir -p /var/run/mysqld
ExecStartPre=/bin/chown mysql:mysql /var/run/mysqld
ExecStartPre=/bin/chmod 0755 /var/run/mysqld
3. 重新加载 systemd 配置
# systemctl daemon-reload
4. 启用并启动 MySQL 服务
# systemctl enable mysql
# systemctl start mysql
5. 验证服务状态
# systemctl status mysql
6. 测试重启后是否正常
# reboot
重启后检查
# systemctl status mysql