下载 MySQL 包后,在尝试安装之前,请确保包完好无损且未被篡改。MySQL Linux 通用二进制包的完整性检查有两种方法:MD5 Checksum和Signature Checking Using GnuPG。此部署中使用了 使用 GnuPG 的签名检查。
MySQL 使用GnuPG (GNU Privacy Guard) 对其可下载的包进行签名 。大多数 Linux 发行版都默认安装了GnuPG 。否则,请参阅http://www.gnupg.org/以获取有关GnuPG以及如何获取和安装它的更多信息。
-
要验证 MySQL 下载包的签名,请获取 MySQL 公共 GPG 构建密钥的副本,您可以从http://pgp.mit.edu/下载。键名为
mysql-build@oss.oracle.com
。在您的浏览器中,导航至 http://pgp.mit.edu/。
-
在搜索字符串字段中,输入密钥名称,
mysql-build@oss.oracle.com
然后单击执行搜索!返回此搜索结果:
Type bits/keyID Date User ID ----------------------------------------------------------------------------------------------- pub 4096R/3A79BD29 2021-12-14 MySQL Release Engineering <mysql-build@oss.oracle.com> pub 1024D/5072E1F5 2003-02-03 MySQL Release Engineering <mysql-build@oss.oracle.com> MySQL Package signing key (www.mysql.com) <build@mysql.com>
-
单击
keyID
链接,复制密钥,并将其保存到名为 的文件mysql_pubkey.asc
中,例如。keyID
3A79BD29
适用于 MySQL 8.0.28 及更高版本。keyID
5072E1F5
适用于早期的 MySQL 版本。或者,您可以直接从 MySQL 参考手册中复制并粘贴密钥。请参阅 使用 GnuPG 检查签名。
-
要将构建密钥导入您的个人公共 GPG 密钥环,请使用gpg --import命令。例如,如果您将密钥保存到名为 的文件
mysql_pubkey.asc
中,则导入命令如下所示:$> gpg --import mysql_pubkey.asc gpg: key 5072E1F5: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported gpg: Total number processed: 1 gpg: imported: 1 gpg: no ultimately trusted keys found
-
.asc
导入公共构建密钥后,将您创建的公共构建密钥文件放在与 MySQL 下载包中包含 的签名文件相同的目录中 。签名文件与分发文件同名并带有
.asc
扩展名,如下表所示。表 3.1 源文件的 MySQL 包和签名文件
文件类型 文件名 分发文件 mysql-commercial-8.0.
xx
-linux-glibc2.12-x86_64.tar.xz签名文件 mysql-commercial-8.0.
xx
-linux-glibc2.12-x86_64.tar.xz.asc
-
运行此命令以验证分发文件的签名:
$> gpg --verify mysql-commercial-8.0.xx-linux-glibc2.12-x86_64.tar.xz.asc
如果下载的包有效,则验证返回类似于以下内容的“Good signature”消息:
$> gpg --verify mysql-commercial-8.0.xx-linux-glibc2.12-x86_64.tar.xz.asc gpg: Signature made Tue 01 Feb 2011 02:38:30 AM CST using DSA key ID 5072E1F5 gpg: Good signature from "MySQL Release Engineering <mysql-build@oss.oracle.com>"
该
Good signature
消息表明文件签名有效,但您可能还会看到警告:$> gpg --verify mysql-commercial-8.0.xx-linux-glibc2.12-x86_64.tar.xz.asc gpg: Signature made Wed 23 Jan 2013 02:25:45 AM PST using DSA key ID 5072E1F5 gpg: checking the trustdb gpg: no ultimately trusted keys found gpg: Good signature from "MySQL Release Engineering <mysql-build@oss.oracle.com>" gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: A4A9 4068 76FC BD3C 4567 70C8 8C71 8D3B 5072 E1F5
遇到警告是正常的,因为它们取决于您的设置和配置。以下是对警告的解释:
如果 GPG 签名不匹配,请尝试再次下载相应的包。
有关 GnuPG 签名检查的其他信息,请参阅 使用 GnuPG 进行签名检查。