什么是 MySQL 包完整性?
MySQL 包完整性是指 MySQL 软件包(也称为“发行版”)的完整性。一般地,MySQL 发布包由源代码发行版和二进制发行版组成。源代码发行版包含原始代码,而二进制发行版包含已编译的代码。
为什么验证 MySQL 包完整性?
MySQL 包完整性验证是确保您下载的软件包未被篡改或被恶意更改的步骤。如果下载的软件包已被篡改或被恶意修改,可能会在您的系统中引入漏洞或其他安全问题。
如何验证 MySQL 包完整性?
通常来说,您可以通过下列步骤验证 MySQL 软件包的完整性:
下载 MySQL 软件包。
获取 MySQL 的签名密钥。
请求 PGP 密钥服务器以获取 MySQL 签名密钥。
验证签名密钥指纹。
下载 MySQL 发布者的 PGP 公钥。
验证 MySQL 发布者的 PGP 公钥。
解压 MySQL 软件包。
计算并验证软件包的 SHA256 校验值。
以下是完整的验证过程:
步骤 1:下载 MySQL 软件包
您可以从 MySQL 官网 上下载 MySQL 软件包。您需要选择适合您系统的软件包(例如,Linux、Windows 或 macOS)。
例如,如果您使用 Linux 系统,您可能需要下载 tarball 文件。在下载完成后,您可以在终端中执行以下命令以验证 tarball 文件(在本例中,我们假设您下载的文件为 mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz):
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz
注意:如果您下载的不是 tarball 文件,您可能需要采取其他方法来验证软件包的完整性。
步骤 2:获取 MySQL 的签名密钥
MySQL 发行版使用 PGP(Pretty Good Privacy)签名来加强安全性。
首先,您需要获取 MySQL 的签名密钥。请使用下列命令从 PGP 公钥服务器获取官方 MySQL PGP 签名密钥:
gpg --recv-keys 8C718D3B5072E1F5
注意:尽管 MySQL 使用 PGP 签名来验证软件包的完整性,但是在此过程中,我们仅仅使用 PGP 来获取 MySQL 的公钥和验证 MySQL 的签名密钥。因此,如果您还没有安装 gnupg,您需要首先执行下列命令来安装它:
sudo apt-get install gnupg
步骤 3:请求 PGP 密钥服务器以获取 MySQL 签名密钥
一旦您下载了 MySQL 软件包并获取了 MySQL 的签名密钥,您需要使用指纹验证签名密钥是否是官方 MySQL 发行版的签名密钥。
您可以使用 gpg --list-keys 命令来列出所有已安装的公钥。例如,您可以运行以下命令:
gpg --list-keys
您应该看到如下文本:
/home/user/.gnupg/pubring.kbx
-----------------------------
pub rsa2048 2017-11-18 [SC] [expires: 2022-11-18]
79EAFD1EAA053FBD73E238F7AF86E5CD917A672C
uid [ultimate] MySQL Release Engineering <mysql-build@oss.oracle.com>
sub rsa2048 2017-11-18 [E] [expires: 2022-11-18]
在上面的输出中,您需要找到“MySQL Release Engineering
gpg --fingerprint 79EAFD1EAA053FBD73E238F7AF86E5CD917A672C
如果指纹与官方 MySQL 发行版公钥的指纹匹配,说明您已经找到了正确的 MySQL 公钥。
步骤 4:验证签名密钥指纹
下一步是检查 MySQL 的签名密钥是否是官方 MySQL 发行版的签名密钥。请使用以下命令列出您导入的密钥:
gpg --fingerprint 8C718D3B5072E1F5
您应该看到如下输出:
pub rsa4096 2016-05-23 [SC]
8C71 8D3B 5072 E1F5 B816 44C2 4281 3C19 E2F2 9A25
uid [ unknown] MySQL Release Engineering <mysql-build@oss.oracle.com>
sub rsa4096 2016-05-23 [E] [expires: 2023-05-23]
在上面的输出中,您需要确保指纹匹配:8C71 8D3B 5072 E1F5 B816 44C2 4281 3C19 E2F2 9A25。如果指纹匹配,则 MySQL 的签名密钥是官方 MySQL 发行版签名密钥。
步骤 5:下载 MySQL 发布者的 PGP 公钥
一旦您找到了官方密钥和 MySQL 签名密钥,下一步是下载 MySQL 发布者的 PGP 公钥。在本例中,使用命令从 MySQL 官网下载公钥文件可能如下所示:
wget https://mysql.com/downloads/gpg/mysql_pubkey.asc
步骤 6:验证 MySQL 发布者的 PGP 公钥
接下来,您需要验证 MySQL 发布者的 PGP 公钥。使用下列命令来导入 MySQL 发布者的公钥:
gpg --import mysql_pubkey.asc
如果命令成功,则 gpg 将会显示以下输出:
gpg: key 8C718D3B5072E1F5: "MySQL Release Engineering <mysql-build@oss.oracle.com>" 1 new signature
gpg: Total number processed: 1
gpg: new signatures: 1
在导入公钥后,您需要确保 MySQL 发布者的 fingerprint 匹配。使用 gpg --fingerprint 命令列出各个公钥。如果公钥匹配,则已成功验证公钥。
步骤 7:解压 MySQL 软件包
现在,解压您下载的 MySQL 软件包。在终端中,移动到您下载的 tarball 文件所在的目录(如果您下载的文件名有变化,请更改以下命令):
tar -xvf mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz
注意:如果您下载的不是 tarball 文件,您可能需要采取其他步骤来解压缩。
步骤 8:计算并验证软件包的 SHA256 校验值
用下列命令计算 tarball 文件的 SHA256 校验值:
sha256sum mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz
您应该看到如下输出:
1198712bc65b95daef414695c5f06645a3bb0932b52278d4c114ea7fe1c6e5d2 mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz
在本例中,校验和为 1198712bc65b95daef414695c5f06645a3bb0932b52278d4c114ea7fe1c6e5d2。
一旦您计算出校验和,您需要打开 MySQL 官网上的 SHA256 校验文件,以确认您计算出的校验和是否与官方发布的 SHA256 校验和匹配。如果是,则说明您下载的软件包完整,没有被篡改。