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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top