Mysql 为什么启用二进制日志记录选项时会禁用超级权限?

Mysql 为什么启用二进制日志记录选项时会禁用超级权限?,mysql,mariadb,Mysql,Mariadb,互联网上有很多关于如何在有人遇到以下错误时启用超级权限的建议: “错误1419(HY000):您没有超级权限,已启用二进制日志记录” 但我无法找到为什么MySQL在启用二进制日志选项时禁用这些特权 如果使用修改DB或其他内容的触发器,复制是否存在一些问题?它是否安全,如果不安全,什么样的问题,在什么情况下我可以打,如果我将返回超级特权回来?我认为这一限制背后应该有一些道理,但不明白是哪一个 有人对此有答案吗 谢谢。以下是我在文档中找到的一些详细解释。希望这能帮助你理解 CREATE函数和INSE

互联网上有很多关于如何在有人遇到以下错误时启用超级权限的建议:

“错误1419(HY000):您没有超级权限,已启用二进制日志记录”

但我无法找到为什么MySQL在启用二进制日志选项时禁用这些特权

如果使用修改DB或其他内容的触发器,复制是否存在一些问题?它是否安全,如果不安全,什么样的问题,在什么情况下我可以打,如果我将返回超级特权回来?我认为这一限制背后应该有一些道理,但不明白是哪一个

有人对此有答案吗


谢谢。

以下是我在文档中找到的一些详细解释。希望这能帮助你理解

CREATE函数
INSERT
语句将写入 二进制日志,因此从机将执行它们。因为从SQL 线程具有完全权限,它将执行危险语句。 因此,函数调用对主函数和 从属和非复制安全

要防止具有二进制日志记录的服务器出现这种危险 启用后,存储函数创建者必须具有中的
SUPER
权限 除了通常所需的
创建例程
权限之外。 同样,要使用
ALTER函数
,您必须具有
SUPER
ALTER例程
权限之外的权限。没有
超级权限
,将发生错误:

错误1419(HY000):您没有超级权限和
已启用二进制日志记录(您*可能*希望使用不太安全的
日志\u bin\u信任\u函数\u创建者变量)
如果您不想要求函数创建者拥有
SUPER
特权(例如,如果所有使用
创建例程的用户
系统上的权限(由经验丰富的应用程序开发人员提供),设置
全局
log\u bin\u trust\u函数\u creators
系统变量为1。你 也可以使用
--启动服务器时,log bin trust function creators=1
选项。 如果未启用二进制日志记录,
log\u bin\u trust\u函数\u创建者
不适用<创建函数不需要代码>超级
,除非:, 如前所述,函数中的
DEFINER
值 定义需要它


来源:

如果我理解正确,如果某个用户对其他数据库没有权限,并且无法修改它们(在主数据库上),则可能会出现问题,而从数据库将无条件地执行此操作(因为它拥有所有权限),并且可能是攻击的来源。如果MySQL集群不是面向客户的,并且所有数据在插入数据库之前都通过了安全检查和清理,那么这个限制似乎不太相关。这句话对不对?谢谢。如果我理解正确的话。。。。。。它可能是攻击的源头这个限制似乎是正确的。。。还是不如果在此过程中调用了任何存储过程,并且发生了更新/插入数据,则可能会被视为不安全且不确定。如果执行更新的函数是不确定的,那么它是不可重复的。这可能有两个不良影响:1)它将使从机与主机不同。2) 恢复的数据将与原始数据不同。我还没有在实验室里试过。谢谢,维卡什,你帮了我很多。很高兴听到:)这个链接有一个很好的答案