Ответ 1
У вас должны быть привилегии MySQL Root для установки разрешения SUPER для пользователя.
GRANT SUPER
ON '<database>'.'<tablename/*>'
TO '<username>'@'<host/connection/ip/%>';
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-привилегию и создать свой триггер?
У вас должны быть привилегии MySQL Root для установки разрешения SUPER для пользователя.
GRANT SUPER
ON '<database>'.'<tablename/*>'
TO '<username>'@'<host/connection/ip/%>';
Я попытался дать SUPER privilede на base.table уровне, но он терпит неудачу, поэтому я сделал
grant super on *.* to 'my_user'@'localhost';
затем создал мои триггеры. Но не забудьте отозвать его
revoke super on *.* from 'my_user'@'localhost';
Потому что это опасная привилегия оставить его в интернет-базе данных
Другой способ создания триггера без привилегии SUPER, добавив следующую строку в my.cnf или my.ini log_bin_trust_function_creators = 1
Другой способ эта ошибка, если это приемлемо, состоит в отключении двоичного кода протоколирование.
Я сделал это, потому что я не использую сервер репликации, и не делаю резервные копии из binlogs для восстановления. Но это может быть неприемлемо в вашей ситуации.
Чтобы сделать это, просто закомментируйте строки log_bin
и log_bin_index
в /etc/mysql/my.cnf
Теперь запускать привилегию отлично работает без SUPER.