我的开发人员和我在共享的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授予我TRIGGER特权mySchema
.*我可以在我做SHOW GRANTS时看到它;但是我仍然得到关于需要"SUPER"特权的这个错误.我们不想让所有的开发者都超赞.
有什么建议?
这是错误报告.一种选择是在打开--log-bin-trust-function-creators选项的情况下运行,这将允许您创建没有SUPER权限的触发器. 此页面解释了该选项的含义.基本上它与MySQL是否认为您的触发器是确定性的(即复制安全)有关.您的DBA可能会或可能不会在该模式下运行.这不是理想的,但比赠送SUPER更好......
更新:第二个链接的文档实际上听起来像你可以通过使用基于行的复制,甚至混合模式复制来解决这个问题.至少这将使复制安全.你是否仍然需要SUPER,我不知道,但它可能值得一试.