文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


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

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

MySQL 二进制日志文件和中继日志文件可以加密,这有助于保护这些文件和其中包含的潜在敏感数据免遭外部攻击者的滥用,以及防止存储这些文件的操作系统上的用户未经授权查看。用于这些文件的加密算法是 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 节“二进制日志事务压缩”