小编典典

无法在5.1.32上创建具有TRIGGER特权的MySQL触发器

sql

我和其他开发人员在共享的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特权,当我执行SHOWGRANTS时可以看到它;但是我仍然收到有关需要“ SUPER”特权的错误。我们不想让所有开发人员都拥有超级。

有什么建议?


阅读 186

收藏
2021-03-23

共1个答案

小编典典

这是此错误的报告。一种选择是在–log-bin-trust-
function-creators选项打开的情况下运行,这将允许您创建没有SUPER特权的触发器。
本页说明启用该选项的含义。基本上,这与MySQL是否认为您的触发器具有确定性(即复制安全)有关。您的DBA在该模式下运行时可能会适应,也可能会不适应。这不是理想的方法,但是比给出超级方法要好…

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

2021-03-23