跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
Shell / Bash

CentOS 7 安装 MySQL 8.0.45 解决 GPG 密钥不匹配问题

综述由AI生成对 CentOS 7 系统安装 MySQL 8.0.45 时遇到的 GPG 密钥不匹配报错,提供生产环境合规解决方案。核心步骤包括彻底清理系统中残留的旧版 MySQL GPG 密钥,重新导入官方全量密钥(含 2022/2023 版),强制刷新 YUM 缓存并配置正确的 YUM 源。完成后执行安装及验证,确保服务正常启动且包校验通过。方案全程保留 GPG 验证,符合安全规范,解决了密钥冲突导致的安装失败问题。

PentesterX发布于 2026/3/22更新于 2026/5/414K 浏览

一、文档说明

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 运行稳定、安全。

    目录

    1. 一、文档说明
    2. 1.1 适用场景
    3. 1.2 环境前提
    4. 1.3 文档价值
    5. 二、问题根源分析
    6. 三、解决方案(生产环境合规版)
    7. 步骤 1:清理系统中所有 MySQL 相关 GPG 密钥(关键步骤)
    8. 批量列出并删除所有 MySQL 相关 GPG 密钥
    9. 步骤 2:导入 MySQL 官方全量密钥(覆盖所有版本,避免遗漏)
    10. 下载 MySQL 官方基础密钥包并导入
    11. 导入 MySQL 2022 版官方密钥(适配 MySQL 8.0+ 新版本)
    12. 导入 MySQL 2023 版官方密钥(兼容 MySQL 8.0.45+ 高版本校验)
    13. 步骤 3:强制清理 YUM 缓存(彻底清除旧校验信息)
    14. 强制清理 YUM 所有缓存(包括包缓存、密钥校验缓存)
    15. 重新生成 YUM 缓存(仅缓存 MySQL 官方源相关信息,避免混杂)
    16. 步骤 4:配置 MySQL 8.0 官方 YUM 源(确保源配置正确)
    17. 创建并写入 MySQL 8.0 官方 YUM 源配置
    18. 配置官方 2022 版密钥地址(与步骤 2 导入的密钥对应)
    19. 步骤 5:安装 MySQL 8.0.45 服务器(生产环境安全安装)
    20. 四、安装后生产环境必做验证(合规性检查)
    21. 验证 1:查看 MySQL 版本,确认安装成功
    22. 验证 2:启动 MySQL 服务并设置开机自启
    23. 启动 MySQL 服务
    24. 设置开机自启(生产环境必做,避免服务器重启后服务失效)
    25. 查看 MySQL 服务状态
    26. 验证 3:验证 GPG 密钥校验合规性
    27. 验证 MySQL 核心包的 GPG 校验状态
    28. 验证 4:修改初始密码(生产环境必做)
    29. 提取初始密码(从 MySQL 日志中获取)
    30. 登录 MySQL 并修改初始密码(一行命令执行,无需手动输入密码)
    31. 五、常见问题补充(生产环境适配)
    32. 问题 1:执行密钥删除命令时,提示“无对应密钥”
    33. 问题 2:wget 下载密钥时提示“无法连接”
    34. 问题 3:安装时仍提示密钥不匹配
    35. 六、总结
    • 💰 8折买阿里云服务器限时8折了解详情
    • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
    • 代充Chatgpt Plus/pro 帐号了解详情
    • 🤖 一键搭建Deepseek满血版了解详情
    • 一键打造专属AI 智能体了解详情
    极客日志微信公众号二维码

    微信扫一扫,关注极客日志

    微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

    更多推荐文章

    查看全部
    • Python aespy 包语法、参数与实战案例
    • 纯 HTML+CSS 实现蛇形扭动特效详解
    • MBA 培训管理系统:基于微搭低代码的架构与实战
    • 基于 rsync 与 Nginx 搭建 CentOS 本地 YUM 源服务器
    • OpenClaw 记忆管理实战:Token 压缩与双层记忆体系
    • Whisper v0.2 语音转文字工具安装与使用指南
    • OpenClaw 飞书机器人权限配置与安全指南
    • Ubuntu 20.04 系统下 QGroundControl 地面站安装指南
    • Rspack:基于 Rust 的下一代高性能 Web 构建工具
    • Phi-3-mini-128k-instruct Chainlit 插件开发:思维链可视化与 Token 统计
    • 无人机视角山区泥石流与滑坡图像识别数据集
    • OpenIM 开源即时通讯系统部署全流程解析
    • OpenClaw 本地 AI Agent 部署与实战指南
    • OpenClaw 多 Agent 与多飞书机器人配置指南
    • 使用 Trae 编译 C++ 指南
    • Python 科赫雪花绘制:数学原理与 turtle 实现
    • 循环队列原理与 C 语言实现详解
    • llama.cpp 量化大模型内网部署与运行指南
    • C++ WebSocket 在线五子棋对战系统全栈实战
    • C++ STL 容器详解:map 与 set 核心用法与底层逻辑

    相关免费在线工具

    • Base64 字符串编码/解码

      将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

    • Base64 文件转换器

      将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

    • Markdown转HTML

      将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

    • HTML转Markdown

      将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

    • JSON 压缩

      通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

    • JSON美化和格式化

      将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online