rpm --import 是解决 CentOS 下 MySQL 8.0 GPG 密钥错误最直接有效的动作,但必须配合清理残留旧密钥、修正仓库中 gpgkey 为 https://repo.mysql.com/RPM-GPG-KEY-mysql-2023、启用 gpgcheck=1,并执行 yum clean all && yum makecache 才能真正生效。

rpm --import 是解决 CentOS 下 MySQL 8.0 GPG 密钥错误最直接有效的动作,但单独执行它几乎从不奏效——真正卡住安装的,是残留旧密钥、仓库配置错位和缓存未刷新这三件事。
为什么 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 还报错?
因为 RPM 密钥环允许多个同名密钥共存,rpm --import 只加不删。系统里还躺着 gpg-pubkey-5072e1f5-*(2019 年旧密钥)或 gpg-pubkey-3a79bd29-*(2022 年密钥),yum/dnf 校验时随机挑一个失败的去用,你刚导入的 2023 密钥根本没被调用。
- 先确认残留:运行
rpm -qa gpg-pubkey | grep -i mysql,有输出就说明冲突存在 - 必须清空:用
rpm -e --allmatches $(rpm -qa gpg-pubkey | grep -i mysql | cut -d' ' -f1)批量卸载所有 MySQL 相关密钥 - 验证清空:再次执行上条命令,应无任何输出
导入哪个密钥?路径怎么配才不白忙?
截至 2026 年 6 月,MySQL 官方仍在使用 RPM-GPG-KEY-mysql-2023 签署所有 EL7/EL8/EL9 的 8.0.x 包(注意:没有 2024 版本,别搜错)。
- 推荐远程导入(免下载):
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 - 检查是否生效:
rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n' | grep -i mysql应看到含2023的条目 - 同步修正仓库配置:打开
/etc/yum.repos.d/mysql-community.repo,确保gpgkey=行指向https://repo.mysql.com/RPM-GPG-KEY-mysql-2023,不是file:///etc/pki/rpm-gpg/...这类本地路径(该路径不会自动创建) -
gpgcheck=1必须为1,设成0是放弃校验,不是解决问题
装不上还可能卡在哪几个地方?
密钥只是第一关。CentOS 系统版本、仓库启用状态、依赖包冲突,任何一个出错都会在 GPG 阶段报错(错误信息高度相似,容易误判)。
- 确认仓库匹配系统版本:运行
yum repolist enabled | grep mysql,输出中必须是mysql80-community,不能混着mysql57-community;若存在旧仓库,立即禁用:yum-config-manager --disable mysql57-community - 检查 baseurl 是否正确:EL9 系统必须是
baseurl=https://repo.mysql.com/yum/mysql-8.0-community/el9/$basearch/,错写成el7会导致依赖库(如libcrypto.so.10)找不到 - 卸载冲突依赖:
yum remove -y mariadb-libs(CentOS 7/8 默认自带,与 MySQL 冲突) - 强制刷新缓存:
yum clean all && yum makecache,否则旧元数据会继续引用已删除的密钥 ID
Ubuntu/Debian 用户注意密钥格式差异
APT 系统完全不认 RPM 密钥,apt-key add 已废弃且不安全。
- 正确做法:创建 keyring 目录并导入二进制密钥:
sudo mkdir -p /usr/share/keyrings && curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 | gpg --dearmor -o /usr/share/keyrings/mysql-2023-keyring.gpg - 修改源文件(如
/etc/apt/sources.list.d/mysql.list):把deb ...行改成deb [arch=amd64 signed-by=/usr/share/keyrings/mysql-2023-keyring.gpg] https://repo.mysql.com/apt/debian bookworm mysql-8.0 - 再执行
sudo apt update,否则仍会报NO_PUBKEY B7B3B788A8D3785C
.gpg 二进制格式——这三个点,覆盖了 90% 的“GPG 错误”真实原因。别急着重装 repo 包,先看 rpm -qa gpg-pubkey | grep -i mysql 输出什么。


















