今天生成上的mysql突然报[ERROR] Can't find messagefile '/usr/share/errmsg.sys' 可能系统文件有损坏,进行排查后文件内容正常、权限正常、配置正常,最终使用重装mysql-community-common进行恢复
详细说明:
sudo yum reinstall mysql-community-common 只是重新安装 MySQL 的公共文件包,不会影响您的 MySQL 数据库数据。
哪些文件会被覆盖:
bash
# mysql-community-common 包包含的主要是共享文件:
- /usr/share/mysql/* # 共享文件
- /usr/share/errmsg.sys # 错误消息文件
- /usr/share/mysql/charsets/ # 字符集文件
- /usr/share/mysql/english/ # 英语错误消息
- 配置文件模板
- 系统服务文件
哪些文件不会被影响:
bash
# 不会被覆盖的文件:
- /var/lib/mysql/* # 数据文件(最重要!)
- /etc/my.cnf # 主配置文件
- /etc/my.cnf.d/* # 配置片段
- 现有的数据库文件
- 用户账户和权限
- 日志文件(除了可能的重置权限)
安全操作建议:
1. 先备份以防万一(良好习惯)
bash
# 备份MySQL配置
sudo cp -r /etc/my.cnf /etc/my.cnf.backup
sudo cp -r /etc/my.cnf.d/ /etc/my.cnf.d.backup/
# 检查数据目录位置
mysql -e "SHOW VARIABLES LIKE 'datadir';"
# 数据通常在 /var/lib/mysql
2. 重新安装命令
bash
# 重新安装common包
sudo yum reinstall mysql-community-common
# 如果需要,也可以重新安装客户端和服务器(如果需要修复其他问题)
# sudo yum reinstall mysql-community-server mysql-community-client
3. 重新安装后的操作
bash
# 重启MySQL服务
sudo systemctl restart mysqld
# 检查服务状态
sudo systemctl status mysqld
# 验证数据是否还在
mysql -e "SHOW DATABASES;"
您的具体情况判断:
您的错误是找不到 errmsg.sys 文件,重新安装 mysql-community-common 是最合适的解决方案,因为:
- 这个包专门包含这个文件
- 不会影响数据库数据
- 会保留现有配置
- 是最官方的修复方式
建议操作步骤:
bash
# 1. 停止MySQL服务(可选,但建议)
sudo systemctl stop mysqld
# 2. 重新安装common包
sudo yum reinstall mysql-community-common
# 3. 启动MySQL服务
sudo systemctl start mysqld
# 4. 验证问题是否解决
sudo tail -f /var/log/mysqld.log
注意: 如果您的MySQL是通过其他方式安装的(如源码编译、docker等),重新安装yum包可能不会解决问题。请先确认安装方式:
bash
# 查看MySQL安装来源
rpm -qa | grep mysql
# 或
which mysqld
总的来说,可以放心执行 sudo yum reinstall mysql-community-common,您的数据是安全的。