先执行 rpm -qa gpg-pubkey | grep -i mysql 查看已安装的 mysql gpg 密钥;若输出含 gpg-pubkey-3a79bd29-61b8bab7 或 gpg-pubkey-5072e1f5-5c4058fb,说明存在新旧密钥冲突,需彻底清理后导入 https://repo.mysql.com/rpm-gpg-key-mysql-2023 并修正仓库配置中 gpgkey 为该 https 地址。

确认当前系统已安装哪些 MySQL GPG 密钥
密钥冲突是 CentOS 8 上 MySQL 安装失败最常被忽略的起点。执行以下命令查看残留密钥:
rpm -qa gpg-pubkey | grep -i mysql
输出类似 gpg-pubkey-3a79bd29-61b8bab7 或 gpg-pubkey-5072e1f5-5c4058fb,说明已有旧密钥存在。其中 3a79bd29 是 2022/2023 年密钥,5072e1f5 是更早版本 —— 混用必然导致校验失败。
若无输出,说明密钥缺失;若有输出,建议全部清除,避免新旧密钥并存干扰验证。
彻底清理旧密钥并导入最新 RPM-GPG-KEY-mysql-2023
CentOS 8 使用 DNF(而非 YUM),必须用兼容方式批量卸载旧密钥:
sudo rpm -e --allmatches $(rpm -qa gpg-pubkey | grep -i mysql | cut -d' ' -f1)
然后导入截至 2026 年 9 月仍为有效的最新密钥:
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
如果网络受限或超时,可分步操作:
wget https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 -O /tmp/mysql-key-2023sudo rpm --import /tmp/mysql-key-2023
注意:不要用 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql —— 该路径在新版仓库中不会自动创建,且内容往往过期。
检查并修正 /etc/yum.repos.d/mysql80-community.repo 中的 gpgkey 配置
即使密钥已导入,若仓库配置指向错误路径,DNF 仍会报 GPG check FAILED。打开配置文件:
sudo vi /etc/yum.repos.d/mysql80-community.repo
定位 [mysql80-community] 段,确保其中这两行存在且准确:
gpgcheck=1gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
删除任何形如 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 的本地路径行 —— DNF 4.0+ 不再依赖该路径,硬编码只会触发 gpg key retrieval failed: [errno 14] 错误。
刷新元数据缓存后重试安装
旧缓存可能包含过期签名信息,必须强制清理并重建:
sudo dnf clean all && sudo dnf makecache
之后再执行安装:
sudo dnf install mysql-community-server
如果仍卡住,常见原因有:
- 误用了 EL7 或 EL9 的仓库包(如
mysql80-community-release-el7-7.noarch.rpm)—— CentOS 8 必须用el8后缀的仓库包 - 未禁用默认 MySQL 模块(虽然 MySQL 8.0 是默认,但模块启用可能干扰第三方仓库):
sudo dnf moduledisable mysql - 跳过校验只是临时手段:
sudo dnf install --nogpgcheck mysql-community-server,但生产环境不应长期关闭签名校验
密钥本身不难导入,真正容易出问题的是「旧密钥没清干净 + 仓库配置还指着不存在的本地路径」—— 这两个点同时存在时,错误提示反而会误导你去“重装密钥”,而不是先清理和修正配置。











