Domanda

mysql ver è 5.0.67

il mio codice trigger è:

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 ;

l'errore è:

  

# 1227 - Accesso negato; hai bisogno del privilegio SUPER per questa operazione

il mio server, non è cpanel! è: Pannello di controllo Web DirectAdmin.

come posso creare il privilegio SUPER e creare il mio trigger?

È stato utile?

Soluzione

È necessario disporre dei privilegi di root di MySQL per impostare l'autorizzazione SUPER per un utente.

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

Altri suggerimenti

Ho provato a dare il privilegio SUPER a livello di database.table, ma non ci riesce, quindi l'ho fatto

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

quindi ha creato i miei trigger. Ma non dimenticare di revocarlo

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

Perché è un privilegio pericoloso lasciarlo concesso nel database di Internet

Un altro modo per creare trigger senza privilegio SUPER aggiungendo la seguente riga a my.cnf o my.ini log_bin_trust_function_creators = 1

Un altro modo per aggirare questo errore , se accettabile, è disabilitare registrazione binaria .

L'ho fatto perché non sto usando un server di replica, né sto facendo backup dai binlog per il ripristino. Ma potrebbe non essere appropriato nella tua situazione.

Per farlo, commenta le righe log_bin e log_bin_index nelle tue /etc/mysql/my.cnf

Ora il privilegio di trigger funziona bene senza SUPER.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top