mysql PPA - 无效的签名

我已经安装了mysql-server软件包!!!
我想确保我的Ubuntu上有最新的MySQL。所以(很久以前)我添加了repo.mysql.com/apt/ubuntu PPA。最近我注意到在执行apt update时出现与该存储库相关的错误。根据this guide,我已经下载并导入了公共GPG密钥。
现在当我执行sudo apt update时,我得到以下错误:
Err:8 http://repo.mysql.com/apt/ubuntu cosmic InRelease
  The following signatures were invalid: EXPKEYSIG 8C718D3B5072E1F5 MySQL Release Engineering <mysql-build@oss.oracle.com>

操作系统信息:Ubuntu 18.10
我应该担心这个无效的签名吗?如何修复这个错误?
5个回答

你看到的错误表示你的密钥已过期。
如果你想要列出系统上的所有密钥,可以使用命令sudo apt-key list。如果你希望缩小输出范围,你可以通过grep expired来获取只包含过期密钥的列表。
对于每个过期的密钥,使用命令sudo apt-key adv --keyserver [KEY_SERVER] --recv-keys [KEY],其中[KEY]与问题中的数字相关,或者在这种情况下为:
8C718D3B5072E1F5 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8C718D3B5072E1F5 keyserver.ubuntu.com是由Canonical, Ltd运行的一个开放PGP密钥服务器。
你也可以通过网页界面在keyserver.ubuntu.com上搜索该密钥。
在那里,你将得到一个类似但不完全相同的页面。

enter image description here

在搜索框中输入以0x开头的EXPKEYSIG密钥,并进行搜索,应该返回类似于以下结果:

enter image description here

据我所知,8个十六进制数字是你需要使用以下命令获取更新密钥的简短版本(公钥):
sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 5072E1F5
来源:

我应该在Ansible playbook中完成所有这些。有什么想法吗? - SenG
@SenG 或许你会觉得这个有用。https://www.middlewareinventory.com/blog/ansible-playbook-example/ - Elder Geek
2看起来答案中的 keys.gnupg.net 不再可用。我尝试使用 https://keyserver.ubuntu.com/ 并且它有效。 - maksadbek
@maksadbek 不错的发现!我会进行编辑。 - Elder Geek
1sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <expired-key> 这个命令对我有效。太好了!谢谢。 - Abhi
对我来说没用。 $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29 执行中:/tmp/apt-key-gpghome.eEd2EYwMwm/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29 gpg: 密钥服务器接收失败:服务器指示失败。 - kuri
这个方法对很多人都有效,我建议你开一个新问题,并引用这个问题来提供背景信息。 - Elder Geek


1谢谢,使用最新版本的存储库文件完美运行。 - Riajul


1密钥服务器看起来有些可疑。我在链接的页面中没有看到keys.gnupg.net的提及。你能在回答中提供更多细节吗? - naXa stands with Ukraine
这是一个公钥服务器。在https://dev.mysql.com/doc/refman/8.0/en/checking-gpg-signature.html上找到它。 - Anshul Masne


1查看我的回答,该方法可以解决过期密钥的问题,无论是哪个软件包。 - Elder Geek
没有一个答案提到了“sudo apt-key add <file>”这一步骤。谢谢。 - Siddharth

GPG公钥在这里不正确。需要重新安装最新的GPG公钥。
请尝试。
# apt-key adv --keyserver pgp.mit.edu --recv-keys 467B942D3A79BD29

它将在服务器上安装正确的MySQL-server GPG密钥,然后添加MySQL服务器的存储库。
适用于Ubuntu 22.04(Jammy)。
# echo "deb https://repo.mysql.com/apt/ubuntu/ jammy mysql-apt-config
deb https://repo.mysql.com/apt/ubuntu/ jammy mysql-8.0
deb https://repo.mysql.com/apt/ubuntu/ jammy mysql-tools
deb https://repo.mysql.com/apt/ubuntu/ jammy mysql-cluster-8.0
deb-src https://repo.mysql.com/apt/ubuntu/ jammy mysql-8.0" | sudo tee /etc/apt/sources.list.d/mysql-8.0.list

对于Ubuntu 20.04(Focal):
# echo "deb https://repo.mysql.com/apt/ubuntu/ focal mysql-apt-config
deb https://repo.mysql.com/apt/ubuntu/ focal mysql-8.0
deb https://repo.mysql.com/apt/ubuntu/ focal mysql-tools
deb https://repo.mysql.com/apt/ubuntu/ focal mysql-cluster-8.0
deb-src https://repo.mysql.com/apt/ubuntu/ focal mysql-8.0" | sudo tee /etc/apt/sources.list.d/mysql-8.0.list

对于Ubuntu 18.04(Bionic):
# echo "deb https://repo.mysql.com/apt/ubuntu/ bionic mysql-apt-config
deb https://repo.mysql.com/apt/ubuntu/ bionic mysql-8.0
deb https://repo.mysql.com/apt/ubuntu/ bionic mysql-tools
deb https://repo.mysql.com/apt/ubuntu/ bionic mysql-cluster-8.0
deb-src https://repo.mysql.com/apt/ubuntu/ bionic mysql-8.0" | sudo tee /etc/apt/sources.list.d/mysql-8.0.list

对于Ubuntu 16.04(Xenial):
# echo "deb https://repo.mysql.com/apt/ubuntu/ xenial mysql-apt-config
deb https://repo.mysql.com/apt/ubuntu/ xenial mysql-8.0
deb https://repo.mysql.com/apt/ubuntu/ xenial mysql-tools
deb https://repo.mysql.com/apt/ubuntu/ xenial mysql-cluster-8.0
deb-src https://repo.mysql.com/apt/ubuntu/ xenial mysql-8.0" | sudo tee /etc/apt/sources.list.d/mysql-8.0.list

然后运行
# apt update
# apt install mysql-server