Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

19.3.2.2 二进制日志加密密钥

用于加密日志文件密码的二进制日志加密密钥是256位密钥,使用MySQL Server的密钥环服务(见第8.4.4节,“MySQL密钥环”)生成的,专门为每个MySQL服务器实例生成。密钥环服务处理二进制日志加密密钥的创建、检索和删除。服务器实例只能创建和删除为自己生成的密钥,但可以读取其他实例生成的密钥,如果它们存储在密钥环中,例如通过文件复制克隆的服务器实例。

Important

在备份和恢复过程中,必须包括MySQL服务器实例的二进制日志加密密钥,因为如果当前和保留的二进制日志文件或中继日志文件的文件密码所需的密钥丢失,可能无法启动服务器。

密钥环中的二进制日志加密密钥格式如下:

MySQLReplicationKey_{UUID}_{SEQ_NO}

例如:

MySQLReplicationKey_00508583-b5ce-11e8-a6a5-0010e0734796_1

{UUID}是MySQL服务器生成的真实UUID(server_uuid系统变量的值)。 {SEQ_NO}是二进制日志加密密钥的序列号,每生成一个新密钥就在服务器上递增1。

当前服务器上使用的二进制日志加密密钥称为二进制日志主密钥。当前二进制日志主密钥的序列号存储在密钥环中。二进制日志主密钥用于加密每个新日志文件的文件密码,该文件密码是随机生成的32字节文件密码,特定于日志文件,用于加密文件数据。文件密码使用AES-CBC(AES分组密码模式)加密,使用256位二进制日志加密密钥和随机初始化向量(IV),并存储在日志文件的文件头中。文件数据使用AES-CTR(AES计数器模式)加密,使用从文件密码生成的256位密钥和从文件密码生成的随机数。技术上可以离线解密加密文件,如果知道用于加密文件密码的二进制日志加密密钥,可以使用OpenSSL密码工具包中的工具。

如果您使用文件复制来克隆启用加密的MySQL服务器实例,以便其二进制日志文件和中继日志文件被加密,请确保也复制密钥环,以便克隆服务器可以从源服务器读取二进制日志加密密钥。当克隆服务器激活加密(无论是在启动时还是随后)时,克隆服务器会识别出二进制日志加密密钥用于加密文件密码,包括源服务器生成的UUID。它自动生成一个新的二进制日志加密密钥,使用自己的生成的UUID,并使用它来加密后续二进制日志文件和中继日志文件的文件密码。复制的文件继续使用源服务器的密钥读取。