Подтвердить что ты не робот

Разрешения для создания триггера в mysql

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.

как я могу создать SUPER-привилегию и создать свой триггер?

4b9b3361

Ответ 1

У вас должны быть привилегии MySQL Root для установки разрешения SUPER для пользователя.

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

Ответ 2

Я попытался дать SUPER privilede на base.table уровне, но он терпит неудачу, поэтому я сделал

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

затем создал мои триггеры. Но не забудьте отозвать его

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

Потому что это опасная привилегия оставить его в интернет-базе данных

Ответ 3

Другой способ создания триггера без привилегии SUPER, добавив следующую строку в my.cnf или my.ini log_bin_trust_function_creators = 1

Ответ 4

Другой способ эта ошибка, если это приемлемо, состоит в отключении двоичного кода протоколирование.

Я сделал это, потому что я не использую сервер репликации, и не делаю резервные копии из binlogs для восстановления. Но это может быть неприемлемо в вашей ситуации.

Чтобы сделать это, просто закомментируйте строки log_bin и log_bin_index в /etc/mysql/my.cnf

Теперь запускать привилегию отлично работает без SUPER.