Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


19.3.2.2 二进制日志加密密钥

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

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位的密钥生成自文件密码和文件密码生成的nonce加密。技术上可以在离线情况下解密加密文件,如果知道用于加密文件密码的二进制日志加密密钥,可以使用OpenSSL加密工具包中的工具。

如果使用文件复制克隆 MySQL 服务器实例,该实例具有加密活动的二进制日志文件和中继日志文件,确保密钥环也被复制,以便克隆服务器可以读取二进制日志加密密钥。激活加密时,克隆服务器识别二进制日志加密密钥用于复制文件的 UUID,自动生成新的二进制日志加密密钥使用自己的 UUID 加密文件密码的密码。复制文件继续使用源服务器的密钥。