centos 7 安装 mysql 报错需先彻底卸载 mariadb 及残留文件,再配置 el7 兼容的官方 yum 源、导入 gpg 密钥,最后安装服务、获取临时密码并重置符合策略的新密码。

如果您在 CentOS 7 系统中安装 MySQL 数据库时遇到配置报错,例如服务无法启动、初始化失败、密码获取异常或 GPG 密钥验证错误,则很可能是由于残留组件冲突、YUM 源配置不当、依赖缺失或权限/路径异常所致。以下是针对各类典型配置报错的系统性解决步骤:
一、彻底卸载 MariaDB 与旧版 MySQL 冲突组件
CentOS 7 默认预装 MariaDB,其服务名(mariadb)、端口(3306)、配置文件(/etc/my.cnf)及数据目录(/var/lib/mysql)均与官方 MySQL 冲突,必须完全清除,否则会导致 mysqld 启动失败或配置覆盖失效。
1、停止正在运行的数据库服务:
执行 systemctl stop mysqld mariadb,并确认无残留进程:
ps aux | grep -E "(mysqld|mariadb)",若输出为空则表示已停止。
2、卸载所有相关 RPM 包:
执行 rpm -qa | grep -E "mysql|mariadb" | xargs yum remove -y,强制移除全部匹配包。
3、删除残留配置与数据目录:
执行 rm -rf /etc/my.cnf /etc/my.cnf.d /var/lib/mysql /var/log/mysqld.log,确保无历史配置干扰新安装流程。
二、配置兼容的 MySQL 官方 YUM 源
CentOS 7 自带 YUM 源不含 MySQL 官方软件包,直接 yum install mysql-community-server 会报“no package available”。必须手动添加与系统版本(el7)严格匹配的官方源,否则将触发元数据解析失败或仓库不可用错误。
1、确认系统版本:
执行 cat /etc/redhat-release,输出应为类似 CentOS Linux release 7.x.x (Core) 的格式。
2、下载对应 el7 版本的 MySQL YUM 发行包:
访问 https://dev.mysql.com/downloads/repo/yum/,右键查看页面源码,定位到 mysql80-community-release-el7-*.noarch.rpm 或 mysql57-community-release-el7-*.noarch.rpm(根据目标版本选择),使用 wget 下载:
wget https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm。
3、安装 YUM 源包并验证:
执行 rpm -ivh mysql80-community-release-el7-3.noarch.rpm;
再执行 yum repolist enabled | grep "mysql",若返回包含 mysql80-community 的条目,则源已生效。
三、处理 GPG 密钥验证失败报错
执行 yum install 时若出现 “GPG key retrieval failed” 或 “Failing package is: mysql-community-client-*” 提示,说明本地未导入 MySQL 官方 GPG 公钥,导致 RPM 包签名校验失败,安装中断。
1、手动导入最新 GPG 密钥:
执行 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022(适用于 2022 年后发布的 MySQL 8.0/5.7 包)。
2、若仍报错,可临时禁用密钥检查(仅限测试环境):
执行 yum install -y mysql-community-server --nogpgcheck,但不推荐用于生产环境。
四、安装并初始化 MySQL 服务
YUM 源配置正确且密钥就绪后,方可执行安装。若此前跳过卸载或源配置步骤,此处极易触发依赖缺失(如 libaio.so.1)或服务单元文件缺失等错误。
1、安装 MySQL 服务端主程序:
执行 yum install -y mysql-community-server,该命令自动拉取并安装 server、client、common、libs 等必需组件。
2、启动 mysqld 服务并设为开机自启:
执行 systemctl start mysqld;
执行 systemctl enable mysqld。
3、获取 root 用户初始密码:
执行 grep 'temporary password' /var/log/mysqld.log,输出形如 A temporary password is generated for root@localhost: xxxxxxxx,其中冒号后字符串即为临时密码。
五、修复登录失败与密码策略报错
使用临时密码登录后若提示 “ERROR 1820 (HY000): You must reset your password”,或执行 SET PASSWORD 报错 “Your password does not satisfy the current policy requirements”,说明 MySQL 5.7+ 默认启用了 validate_password 插件,对密码复杂度有强制要求。
1、临时关闭密码策略插件(便于快速验证):
编辑配置文件:vi /etc/my.cnf;
在 [mysqld] 段落下新增一行:validate_password=off;
保存后执行 systemctl restart mysqld。
2、重置 root 密码:
执行 mysql -uroot -p,输入临时密码进入;
执行 ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';(密码需含大小写字母、数字、特殊字符且长度 ≥8);
执行 FLUSH PRIVILEGES;。











