CentOS7安装MySQL8.0.45解决GPG密钥不匹配问题的全步骤(生产环境合规版)

 更新时间:2026年04月20日 08:36:26   作者:举起大象的蚂蚁  
这篇文章主要介绍了CentOS7安装MySQL8.0.45解决GPG密钥不匹配问题的相关资料,本文详细描述了每一步骤的操作方法和注意事项,确保安装过程中保留GPG验证,符合生产环境安全要求,需要的朋友可以参考下

一、文档说明

1.1 适用场景

本文适用于 CentOS 7 系统,在安装 MySQL 8.0.45 社区版(通过 YUM 源方式)时,遇到「GPG 密钥已安装但与包不匹配」报错的生产环境解决方案。

核心报错信息(本文重点解决):

The GPG keys listed for the “MySQL 8.0 Community Server” repository are already installed but they are not correct for this package. Check that the correct key URLs are configured for this repository. Failing package is: mysql-community-common-8.0.45-1.el7.x86_64. GPG Keys are configured as: https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

1.2 环境前提

  • 系统:CentOS 7(x86_64,任意内核版本,生产环境稳定版优先);

  • 权限:已获取 root 用户权限(生产环境操作必备);

  • 状态:已尝试安装 MySQL 8.0.45,出现上述 GPG 密钥不匹配报错,且已清理旧 MySQL YUM 源配置;

  • 网络:服务器可正常访问外网(需下载官方密钥及 MySQL 安装包)。

1.3 文档价值

针对生产环境「安全性、合规性」要求,提供「彻底清理密钥冲突+重新导入官方全量密钥」的解决方案,不跳过 GPG 验证、不降低系统安全等级,全程可追溯、可复用,解决 CentOS 7 与 MySQL 8.0.45 密钥适配兼容性问题。

二、问题根源分析

生产环境出现该报错的核心原因的是 系统密钥环残留冲突,具体如下:

  1. MySQL 8.0.45 版本对 GPG 密钥校验更严格,需匹配官方 2022/2023 版密钥;

  2. 系统此前可能安装过 MySQL 旧版本、旧 YUM 源,导致密钥环中残留旧版 MySQL 密钥(如 0x5072E1F5 旧密钥);

  3. 残留旧密钥与 MySQL 8.0.45 包所需的新密钥冲突,即使重新导入新密钥,系统仍会优先校验残留旧密钥,导致报错;

  4. YUM 缓存中留存了旧的密钥校验信息,未彻底清理,进一步加剧冲突。

三、解决方案(生产环境合规版)

核心思路:彻底清理所有 MySQL 相关残留密钥 → 导入 MySQL 官方全量密钥 → 强制刷新 YUM 缓存 → 正常安装 MySQL 8.0.45,全程保留 GPG 验证,符合生产环境安全规范。

步骤 1:清理系统中所有 MySQL 相关 GPG 密钥(关键步骤)

执行以下命令,批量列出并删除密钥环中所有与 MySQL 相关的 GPG 密钥,彻底清除冲突根源(生产环境可安全执行,仅删除 MySQL 相关密钥,不影响其他软件):

# 批量列出并删除所有 MySQL 相关 GPG 密钥
for key in $(rpm -qa gpg-pubkey | grep -i mysql | cut -d '-' -f 4-); do
    rpm -e --allmatches gpg-pubkey-$key
done

执行说明:

  • 命令会先通过 rpm -qa gpg-pubkey | grep -i mysql 列出所有 MySQL 相关密钥;

  • 通过 cut -d '-' -f 4- 提取密钥编号,再通过 rpm -e --allmatches 彻底删除该密钥(包括所有匹配的版本);

  • 执行后无报错即说明清理成功,若提示“未找到对应密钥”,说明系统中无残留,可直接进入下一步。

步骤 2:导入 MySQL 官方全量密钥(覆盖所有版本,避免遗漏)

清理完成后,重新导入 MySQL 官方全量密钥(包括旧版、2022 版、2023 版),确保与 MySQL 8.0.45 包的密钥校验完全匹配,执行以下命令:

# 下载 MySQL 官方基础密钥包并导入
wget https://repo.mysql.com/RPM-GPG-KEY-mysql -O /tmp/RPM-GPG-KEY-mysql
rpm --import /tmp/RPM-GPG-KEY-mysql
# 导入 MySQL 2022 版官方密钥(适配 MySQL 8.0+ 新版本)
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# 导入 MySQL 2023 版官方密钥(兼容 MySQL 8.0.45+ 高版本校验)
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

执行说明:

  • 先下载基础密钥包到 /tmp 目录(避免直接覆盖系统默认路径,更安全),再导入;

  • 依次导入 2022、2023 版密钥,确保覆盖 MySQL 8.0.45 所需的所有校验密钥;

  • Linux 系统中,密钥导入成功后无任何输出,若提示“密钥已导入”,属于正常现象,无需重复操作。

步骤 3:强制清理 YUM 缓存(彻底清除旧校验信息)

仅执行 yum clean all 无法彻底清理密钥校验缓存,需手动删除缓存目录,再重新生成缓存,执行以下命令(生产环境可安全执行):

# 强制清理 YUM 所有缓存(包括包缓存、密钥校验缓存)
yum clean all && rm -rf /var/cache/yum/*
# 重新生成 YUM 缓存(仅缓存 MySQL 官方源相关信息,避免混杂)
yum makecache fast

执行说明:

  • rm -rf /var/cache/yum/* 会彻底删除 YUM 缓存目录下的所有文件,确保旧的密钥校验信息被完全清除;

  • yum makecache fast 会快速生成新的缓存,缩短后续安装时间;

  • 缓存生成成功后,会显示 MySQL 8.0 仓库的包数量,说明缓存生成正常。

步骤 4:配置 MySQL 8.0 官方 YUM 源(确保源配置正确)

若此前已清理旧源配置,需重新创建 MySQL 8.0 官方 YUM 源配置文件,确保源地址和密钥地址正确,执行以下命令:

# 创建并写入 MySQL 8.0 官方 YUM 源配置
cat > /etc/yum.repos.d/mysql-community.repo << EOF
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=https://repo.mysql.com/yum/mysql-8.0-community/el/7/x86_64/
enabled=1
gpgcheck=1
# 配置官方 2022 版密钥地址(与步骤 2 导入的密钥对应)
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
EOF

执行说明:该配置文件仅包含 MySQL 8.0 官方源,无多余干扰项,确保安装时从官方源下载包,且密钥地址与导入的密钥一致。

步骤 5:安装 MySQL 8.0.45 服务器(生产环境安全安装)

完成上述所有步骤后,密钥冲突已彻底解决,执行以下命令安装 MySQL 8.0.45,全程会正常进行 GPG 密钥验证,且验证会通过:

yum install -y mysql-community-server

安装说明:

  • 安装过程中,系统会自动校验包的 GPG 密钥,无需手动干预;

  • 若出现“导入 GPG 密钥”提示,直接按 y 确认即可(与步骤 2 导入的密钥一致);

  • 安装完成后,系统会自动配置 MySQL 相关依赖,无需额外操作。

四、安装后生产环境必做验证(合规性检查)

安装完成后,需执行以下验证步骤,确保 MySQL 服务正常、密钥校验合规、包完整,符合生产环境要求:

验证 1:查看 MySQL 版本,确认安装成功

mysql --version

正常输出示例(需包含 8.0.45 版本):

mysql Ver 8.0.45 for Linux on x86_64 (MySQL Community Server - GPL)

验证 2:启动 MySQL 服务并设置开机自启

# 启动 MySQL 服务
systemctl start mysqld
# 设置开机自启(生产环境必做,避免服务器重启后服务失效)
systemctl enable mysqld
# 查看 MySQL 服务状态
systemctl status mysqld

正常状态:输出中包含 active (running),无报错信息,说明服务启动正常。

验证 3:验证 GPG 密钥校验合规性

检查 MySQL 安装包的 GPG 校验状态,确保包未被篡改,符合生产环境安全要求:

# 验证 MySQL 核心包的 GPG 校验状态
rpm -K /var/cache/yum/x86_64/7/mysql80-community/packages/mysql-community-common-8.0.45-1.el7.x86_64.rpm

正常输出示例(需包含 pgp sha256 OK):

mysql-community-common-8.0.45-1.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

验证 4:修改初始密码(生产环境必做)

MySQL 8.0.45 安装后会生成临时初始密码,需立即修改为生产环境强密码(符合复杂度:大小写+数字+特殊字符,长度≥8):

# 提取初始密码(从 MySQL 日志中获取)
temp_pass=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
# 登录 MySQL 并修改初始密码(一行命令执行,无需手动输入密码)
mysql -uroot -p$temp_pass --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass@2026'; FLUSH PRIVILEGES;"

说明:将 YourStrongPass@2026 替换为生产环境实际使用的强密码,执行后无报错即说明密码修改成功。

五、常见问题补充(生产环境适配)

问题 1:执行密钥删除命令时,提示“无对应密钥”

原因:系统中无 MySQL 相关残留密钥,属于正常现象;

解决:直接跳过该步骤,进入“导入官方全量密钥”步骤即可。

问题 2:wget 下载密钥时提示“无法连接”

原因:生产环境服务器外网访问受限,无法访问 MySQL 官方地址;

解决:手动下载 https://repo.mysql.com/RPM-GPG-KEY-mysql 密钥文件,上传至服务器 /tmp 目录,再执行 rpm --import /tmp/RPM-GPG-KEY-mysql

问题 3:安装时仍提示密钥不匹配

原因:密钥缓存未彻底清除,或源配置与密钥地址不对应;

解决:重新执行“步骤 1-步骤 3”,确保密钥清理干净、缓存彻底刷新,再重新安装。

六、总结

  1. 核心结论:本文方案通过「彻底清理残留密钥+导入官方全量密钥+强制刷新缓存」,从根源解决了 CentOS 7 安装 MySQL 8.0.45 时的 GPG 密钥不匹配问题,全程保留 GPG 验证,符合生产环境安全合规要求;

  2. 关键要点:生产环境禁止跳过 GPG 验证,密钥冲突的核心是“残留旧密钥干扰”,彻底清理是解决问题的关键;

  3. 可复用性:本文所有命令均可直接复制执行,适配所有 CentOS 7 系统+MySQL 8.0.45 版本的密钥冲突场景,生产环境可直接复用;

  4. 后续建议:安装完成后,定期检查 MySQL 服务状态和密钥校验状态,确保生产环境 MySQL 运行稳定、安全。

到此这篇关于CentOS7安装MySQL8.0.45解决GPG密钥不匹配问题的文章就介绍到这了,更多相关MySQL解决GPG密钥不匹配内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL中like模糊查询的优化方案

    MySQL中like模糊查询的优化方案

    在 MySQL 中,like 模糊查询是一种常用的查询方式,但在某些情况下可能会导致性能问题,本文将介绍八种优化 MySQL 中 like 模糊查询的方法,需要的朋友可以参考下
    2025-05-05
  • MySQL解决外键约束冲突的详细步骤和代码示例

    MySQL解决外键约束冲突的详细步骤和代码示例

    外键约束冲突是指在插入、更新或删除数据时违反了外键约束,从而导致数据库操作失败,外键约束确保数据库表之间的关系完整性,但在某些情况下会引起冲突,以下是详细步骤和相关代码示例,展示如何解决外键约束冲突,需要的朋友可以参考下
    2025-07-07
  • mysql5.7安装及配置教程

    mysql5.7安装及配置教程

    这篇文章主要为大家详细介绍了mysql5.7安装及配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Mysql中@和@@符号的详细使用指南

    Mysql中@和@@符号的详细使用指南

    最近工作遇到了一个问题,给自己做个记录,下面这篇文章主要给大家介绍了关于Mysql中@和@@符号的详细使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • MySQL实现索引下推的示例代码

    MySQL实现索引下推的示例代码

    索引下推是一种数据库查询优化技术,通过在索引扫描阶段应用过滤条件,减少回表操作,本文主要介绍了MySQL实现索引下推的示例代码,感兴趣的可以了解一下
    2025-02-02
  • 详解mysql中的冗余和重复索引

    详解mysql中的冗余和重复索引

    这篇文章主要介绍了详解mysql中的冗余和重复索引,小编觉得挺不错的,这里给大家分享下,供需要的朋友参考。
    2017-10-10
  • MySQL执行事务的语法与流程详解

    MySQL执行事务的语法与流程详解

    这篇文章主要介绍了MySQL执行事务的语法与流程的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • mysql中索引与FROM_UNIXTIME的问题

    mysql中索引与FROM_UNIXTIME的问题

    这篇文章主要介绍了mysql中索引与FROM_UNIXTIME的问题的相关资料,需要的朋友可以参考下
    2017-05-05
  • mysql in索引慢查询优化实现步骤解析

    mysql in索引慢查询优化实现步骤解析

    这篇文章主要为大家介绍了mysql in慢查询优化实现步骤的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • MySQL复合查询从基础到高级应用全面解析

    MySQL复合查询从基础到高级应用全面解析

    本文详细介绍了MySQL中的复合查询,包括基础概念、主要类型、示例数据库结构、子查询、连接查询、UNION查询、派生表与CTE高级用法、实战案例、性能优化与最佳实践以及常见问题与解决方案,感兴趣的朋友跟随小编一起看看吧
    2025-12-12

最新评论