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权限并创建我的触发器?
答案 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
答案 3 :(得分:1)
this bug的另一种方法,如果可以接受,则禁用binary logging。
我这样做是因为我没有使用复制服务器,也没有从binlog进行备份以进行恢复。但在你的情况下可能不合适。
为此,只需在log_bin
log_bin_index
和/etc/mysql/my.cnf
行
现在触发权限在没有SUPER的情况下正常工作。