我试图解析和理解 MySQL 文档所说的何时创建触发器需要 SUPER 权限。他们说:
如果启用了二进制日志,CREATE TRIGGER 可能需要 SUPER 权限[1]
这种暗示在某些情况下它不需要 SUPER 特权。他们指的是 log_bin_trust_function_creators=1 设置,还是还有其他东西?
其次,在[2]中他们说:
... 信任不会创建将导致不安全事件写入二进制日志的存储函数。
这里究竟有什么危险?二进制日志中哪些类型的事件可能是“不安全的”,对谁来说?
[1] https://dev.mysql.com/doc/refman/5.7/en/create-trigger.html
对于 MySQL(实际上是 MariaDB)中的某些触发器,我有一些错误的“定义器”。我认为纠正它们的最简单方法是以下版本:
use information_schema;
update triggers set definer=current_user() where trigger_schema='foobar';
Run Code Online (Sandbox Code Playgroud)
它产生:
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'information_schema'
Run Code Online (Sandbox Code Playgroud)
在同一个会话中,我可以使用“删除触发器”和“创建触发器”删除并重新创建触发器,因此我不了解权限问题。我的用户是否需要一些它没有的特权?