更新时间:2024-11-26 GMT+08:00
分享

数据库参数block_encryption_mode一致性检查

检查源数据库和目标数据库的block_encryption_mode参数是否一致,若不一致,可能会导致迁移之后目标数据库不可用,建议将参数设置为一致。

block_encryption_mode 用于设置使用加解密函数时的加密模式,源库和目标库的block_encryption_mode参数不同,会导致加解密函数的查询的结果不同。

例如,设置block_encryption_mode为aes-128-ecb然后执行SELECT HEX(AES_ENCRYPT('test', 'k')),得到的结果为1521CE1E7B33581DF75BA0DF53F8F6D3;设置lock_encryption_mode为aes-256-ecb,然后执行SELECT HEX(AES_ENCRYPT('test', 'k')),得到的结果为0201581D9FC84F7BBF136A80E7FC9572,两次的结果不一致。可能会导致源库的加密数据同步到目标库之后,在目标库执行解密无法还原出原始数据值。

不通过原因

源数据库和目标数据库的参数block_encryption_mode设置不一致。

处理建议

  • 如果确认未使用相关的加解密函数去操作业务,可以选择跳过该检查项。
  • 如果需要修改数据库block_encryption_mode参数,可参考以下操作。
    • 源数据库为本地自建MySQL库
      • 方法一:执行以下命令,然后重启数据库使设置生效。
        SET GLOBAL block_encryption_mode = '对应的加密模式' 
      • 方法二:在my.cnf或my.ini配置文件添加一行,然后重启数据库使设置生效。
        block_encryption_mode = '对应的加密模式'
    • 源数据库为云上RDS for MySQL实例,可参考修改实例参数修改数据库block_encryption_mode参数。

相关文档