Разрешения на создание триггера в MySQL - PullRequest
12 голосов
/ 10 сентября 2009

mysql вер. 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 Web Control Panel.

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

Ответы [ 4 ]

12 голосов
/ 10 сентября 2009

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

GRANT SUPER 
ON '<database>'.'<tablename/*>' 
TO '<username>'@'<host/connection/ip/%>'; 
4 голосов
/ 20 сентября 2014

Я пытался дать привилегию SUPER на уровне database.table, но это не удалось, поэтому я сделал

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

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

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

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

2 голосов
/ 26 августа 2013

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

1 голос
/ 14 февраля 2014

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

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

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

Теперь привилегия триггера работает без SUPER.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...