MySQL中log_bin_trust_function_creators的使用

tes*_*747 18 mysql security mysql-5.5 data-integrity

有什么用log_bin_trust_function_creators?另外,参数的值是动态的吗?如果我重新启动 MySQL 服务,它会改变吗?

mys*_*ser 20

此变量控制二进制日志记录是否应该信任存储函数创建者,以免创建会导致不安全事件的存储函数。例如。具有 UUID 功能。

这在文档中有很好的解释:

创建存储函数时,必须声明它是确定性的或不修改数据。否则,数据恢复或复制可能不安全。

默认情况下,要接受 CREATE FUNCTION 语句,必须明确指定 DETERMINISTIC、NO SQL 或 READS SQL DATA 中的至少一个。否则会出现错误:

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

要放宽创建函数的上述条件(您必须具有 SUPER 权限并且必须将函数声明为确定性的或不能修改数据),请将全局 log_bin_trust_function_creators 系统变量设置为 1。

参考:mysql-documentation(阅读本文,因为它通过示例进行了解释。)

关于你的第二个问题,如果它是动态的,如果你重新启动服务器它会改变:

  • 是的,它是一个动态变量。

  • 如果您不更新配置以反映更改,该变量将在重新启动时更改。

参考:mysql-documentation-again