13

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

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

MySQL 说: ERROR 1419 (HY000): You don't have the SUPER privilege and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)

我查看了 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”权限的错误。我们不想给所有的开发者超级。

有什么建议么?

4

1 回答 1

15

这是此问题的错误报告。一种选择是在打开 --log-bin-trust-function-creators 选项的情况下运行,这将允许您在没有 SUPER 权限的情况下创建触发器。 此页面解释了打开该选项的含义。基本上它与 MySQL 是否认为您的触发器是确定性的(即复制安全)有关。您的 DBA 可能会也可能不会在该模式下运行。这并不理想,但比发放 SUPER 更好......

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

于 2009-10-27T03:38:47.307 回答