文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  加密二进制日志文件和中继日志文件

19.3.2 加密二进制日志文件和中继日志文件

MySQL 二进制日志文件和中继日志文件可以加密,这有助于保护这些文件和其中包含的潜在敏感数据免遭外部攻击者的滥用,以及防止存储它们的 operativos 系统的用户未经授权查看。用于文件的加密算法(AES(高级加密标准)密码算法)内置于 MySQL 服务器中,无法配置。

您可以通过将 MySQL 服务器上的 binlog_encryption 系统变量设置为 ON 来启用此加密。OFF 是默认值。该系统变量为二进制日志文件和中继日志文件启用加密。服务器上无需启用二进制日志记录即可启用加密,因此您可以在没有二进制日志的副本上加密中继日志文件。要使用加密,必须安装并配置密钥环组件或插件,以便为 MySQL 服务器的密钥环服务提供密钥。有关如何执行此操作的说明,请参阅 第 8.4.4 节“MySQL 密钥环”。任何受支持的密钥环组件或插件都可以用于存储二进制日志加密密钥。

首次在启用加密的情况下启动服务器时,会在初始化二进制日志和中继日志之前生成新的二进制日志加密密钥。此密钥用于加密每个二进制日志文件(如果服务器已启用二进制日志记录)和中继日志文件(如果服务器具有复制通道)的文件密码,并且从文件密码生成的更多密钥用于加密文件中的数据。服务器上当前使用的二进制日志加密密钥称为二进制日志主密钥。两层加密密钥架构意味着可以根据需要轮换二进制日志主密钥(由新的主密钥替换),并且只需要使用新的主密钥重新加密每个文件的密码,而无需重新加密整个文件。将加密所有通道的中继日志文件,包括在激活加密后创建的新通道。二进制日志索引文件和中继日志索引文件永远不会加密。

如果您在服务器运行时激活加密,则会在此时生成新的二进制日志加密密钥。但如果以前在服务器上激活了加密然后又禁用了加密,则会再次使用之前使用的二进制日志加密密钥。二进制日志文件和中继日志文件会立即轮换,并且新文件以及所有后续二进制日志文件和中继日志文件的文件密码都将使用此二进制日志加密密钥进行加密。服务器上仍然存在的现有二进制日志文件和中继日志文件不会加密,但如果不再需要,您可以清除它们。

如果您通过将 binlog_encryption 系统变量更改为 OFF 来停用加密,则二进制日志文件和中继日志文件会立即轮换,并且所有后续日志记录都将不加密。以前加密的文件不会自动解密,但服务器仍然能够读取它们。要在服务器运行时激活或停用加密,需要 BINLOG_ENCRYPTION_ADMIN 权限。

可以使用加密日志文件的文件头开头的魔数 (0xFD62696E) 来区分加密和未加密的二进制日志文件,该魔数与未加密日志文件使用的魔数 (0xFE62696E) 不同。SHOW BINARY LOGS 语句显示每个二进制日志文件是加密的还是未加密的。

当二进制日志文件已加密时,mysqlbinlog 无法直接读取它们,但可以使用 --read-from-remote-server 选项从服务器读取它们。如果您使用 mysqlbinlog 备份加密的二进制日志文件,请注意,使用 mysqlbinlog 生成的文件副本以未加密的格式存储。

二进制日志加密可以与二进制日志事务压缩结合使用。有关二进制日志事务压缩的更多信息,请参阅 第 7.4.4.5 节“二进制日志事务压缩”