Berechtigungen für einen Trigger in mysql Schaffung
Frage
mysql ver ist 5.0.67
mein Trigger-Code ist:
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 ;
Fehler:
# 1227 - Zugriff verweigert; Sie benötigen die Berechtigung SUPER für diesen Vorgang
mein Server ist nicht cPanel! es ist: Direct Web Control Panel.
Wie kann ich Berechtigung SUPER erstellen und meine Trigger erstellen?
Lösung
Sie müssen MySQL Root-Rechte haben die SUPER Berechtigung für einen Benutzer eingestellt werden.
GRANT SUPER
ON '<database>'.'<tablename/*>'
TO '<username>'@'<host/connection/ip/%>';
Andere Tipps
Ich habe versucht, SUPER privilede auf database.table Ebene zu geben, aber es funktioniert nicht, also tat ich
grant super on *.* to 'my_user'@'localhost';
dann erstellt meine Trigger. Aber vergessen Sie nicht, es zu widerrufen
revoke super on *.* from 'my_user'@'localhost';
Weil es ein gefährliches Privileg es in der Internet-Datenbank gewährt verlassen
Eine andere Möglichkeit, Trigger ohne Berechtigung SUPER zu erstellen, indem Sie die folgende Zeile hinzufügen zu my.cnf oder my.ini log_bin_trust_function_creators = 1
Eine andere Möglichkeit, um diesen Fehler , wenn akzeptabel ist Binärlogging .
Ich habe dies getan, weil ich nicht einen Replikationsserver verwende, noch bin ich Backups von den binlogs für die Wiederherstellung zu tun. Aber es könnte nicht in Ihrer Situation angemessen sein.
Um es zu tun, nur log_bin
und log_bin_index
kommentieren Sie Zeilen in Ihrem /etc/mysql/my.cnf
Jetzt auslösen Privileg ohne SUPER gut funktioniert.