互联网上有很多关于如何启用超级权限的建议,以防有人遇到以下错误:
“错误 1419 (HY000):您没有超级权限并且启用了二进制日志记录”
但是当二进制日志选项打开时,我无法找到 MySQL 禁用这些特权的原因。
如果我使用例如修改数据库或其他东西的触发器,复制是否存在一些问题?是否安全,如果不安全,如果我将SUPER特权退回,我可以在什么情况下遇到什么样的问题?我认为这个限制背后应该有一些理由,但不明白是哪一个。
有人对此有答案吗?
谢谢你。
Baw*_*tha 21
您好,如果有人来这里寻找解决方案并且您正在使用Linux
systemctl stop mysqldlog_bin_trust_function_creators = 1到my.cnf
下面 /etcsystemctl start mysqldVik*_*hak 20
这是我在文档中找到的一些详细解释。希望这可以帮助您理解。
该
CREATE FUNCTION和INSERT语句被写入二进制日志,以便从机将执行它们。因为slave SQL 线程拥有完全权限,所以会执行危险语句。因此,函数调用对 master 和 slave 有不同的影响,并且不是复制安全的。为了防止启用了二进制日志的服务器的这种危险
SUPER,除了通常CREATE ROUTINE所需的权限之外,存储函数创建者还必须具有该权限。同样,要使用ALTER FUNCTION,SUPER除了特权之外,您还必须拥有ALTER ROUTINE特权。如果没有SUPER privilege,则会发生错误:Run Code Online (Sandbox Code Playgroud)ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)如果您不想要求函数创建者拥有该
SUPER权限(例如,如果CREATE ROUTINE您系统上所有拥有该权限的用户都是有经验的应用程序开发人员),则将全局log_bin_trust_function_creators系统变量设置为 1。您也可以使用该--log-bin-trust-function-creators=1选项设置此变量 启动服务器时。如果未启用二进制日志记录,log_bin_trust_function_creators则不适用。SUPER函数创建不需要它,除非如前所述,DEFINER函数定义中的值需要它。
来源:https : //dev.mysql.com/doc/refman/8.0/en/stored-programs-logging.html