无法使用5.1.32的TRIGGER权限创建MySQL触发器

时间:2009-10-26 21:14:21

标签: sql mysql triggers mysql-management

我的开发人员和我在共享的MySQL开发数据库上有自己的开发模式。我的任务要求我在我的模式中创建触发器,但到目前为止我还没有成功。

CREATE TRIGGER myTrigger AFTER DELETE on myTable
FOR EACH ROW BEGIN
    -- DO STUFF
END;

MySQL说: 错误1419(HY000):您没有SUPER权限并且启用了二进制日志记录(可能想要使用安全性较低的log_bin_trust_function_creators变量)

我检查了MySQL手册(http://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html):

  

TRIGGER权限使您可以创建和删除触发器。您必须拥有此表的权限才能为该表创建或删除触发器。 MySQL 5.1.6中添加了此权限。 (在MySQL 5.1.6之前,触发操作需要SUPER权限。)

我们正在运行“5.1.32-enterprise-gpl-advanced-log”,因此TRIGGER权限应该足够了;但是,DBA授予我mySchema。*的TRIGGER权限,并且当我做SHOW GRANTS时我可以看到它;但是我仍然得到关于需要“SUPER”权限的错误。我们不想给所有开发者提供SUPER。

有什么建议吗?

1 个答案:

答案 0 :(得分:13)

这是bug report for this。一种选择是运行 --log-bin-trust-function-creators选项已打开,这将允许您创建没有SUPER权限的触发器。 This page解释了转变该选项意味着什么。基本上它与MySQL是否认为您的触发器是确定性的(即安全复制)有关。您的DBA可能会或可能不会在该模式下运行。这不是理想的,但比赠送SUPER更好......

更新:第二个链接上的文档实际上听起来像是可以通过使用基于行的复制甚至混合模式复制来解决这个问题。至少这将使复制安全。你是否仍然需要SUPER,我不知道,但它可能值得一试。