在mysql中创建触发器的权限

时间:2009-09-10 08:39:43

标签: mysql triggers

mysql ver是5.0.67

我的触发器代码是:

DELIMITER //
CREATE TRIGGER upd_price BEFORE UPDATE ON product_price
 FOR EACH ROW BEGIN  
    INSERT INTO update_price_log (product_id, product_price_old, product_price_new) values(OLD.product_id, OLD.product_price, NEW.product_price);
END
//
DELIMITER ;

错误是:

  

#1227 - 拒绝访问;您需要此操作的SUPER权限

我的服务器,不是cpanel! 它是:DirectAdmin Web控制面板。

如何创建SUPER权限并创建我的触发器?

4 个答案:

答案 0 :(得分:12)

您必须具有MySQL Root权限才能为用户设置SUPER权限。

GRANT SUPER 
ON '<database>'.'<tablename/*>' 
TO '<username>'@'<host/connection/ip/%>'; 

答案 1 :(得分:4)

我试图在database.table级别上给予SUPER特权,但它失败了,所以我做了

grant super on *.* to 'my_user'@'localhost';

然后创建了我的触发器。但不要忘记撤销它

revoke super on *.* from 'my_user'@'localhost';

因为在互联网数据库中授予它是一种危险的特权

答案 2 :(得分:2)

通过将以下行添加到my.cnf或my.ini log_bin_trust_function_creators = 1

来创建没有SUPER权限的触发器的另一种方法

答案 3 :(得分:1)

this bug的另一种方法,如果可以接受,则禁用binary logging

我这样做是因为我没有使用复制服务器,也没有从binlog进行备份以进行恢复。但在你的情况下可能不合适。

为此,只需在log_bin

中注明log_bin_index/etc/mysql/my.cnf

现在触发权限在没有SUPER的情况下正常工作。