Ошибка привилегий при создании триггера MySQL - PullRequest
0 голосов
/ 12 июля 2020

Я хочу выполнить следующий триггер в среде разработки. Этот триггер отлично работает локально (локальный пользователь не имеет суперпривилегий, а ведение журнала включено). Вот триггер

DELIMITER $$
USE `myschema`$$
CREATE
DEFINER=`user`@`localhost`
TRIGGER `myschema`.`roles_BEFORE_INSERT`
BEFORE INSERT ON `myschema`.`roles`
FOR EACH ROW
BEGIN
IF (NEW.role_id IS NULL) THEN
    -- Find max existed role id
    SELECT
      MAX(role_id) INTO @max_role_id
    FROM
      roles;
 
    IF (@max_role_id IS NULL) THEN
      -- Set first role id
      SET NEW.role_id = CONCAT('RID', '0001');
    ELSE
      -- Set next role id
      SET NEW.role_id = CONCAT(SUBSTR(@max_role_id, 1, 3), LPAD(SUBSTR(@max_role_id, 4) + 1, 4, '0'));
    END IF;
  END IF;
END$$

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

SQL State  : HY000
Error Code : 1419
Message    : You do not have the SUPER privilege and binary logging is enabled 
(you might want to use the less safe log_bin_trust_function_creators variable)

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

Для проверки грантов текущего пользователя: войдите в систему с пользователем в mysql и

mysql> показать гранты;

, чтобы проверить пользователя ужина:

mysql > выберите пользователя, хост из mysql .user, где super_priv = 'y';

, чтобы проверить bonlog:

mysql> показать глобальные переменные, такие как «log_bin»;

Исправление: вы можете исправить это, включив log_bin_trust_function_creators

mysql> set global log_bin_trust_function_creators = ON;

прочтите официальный do c для получения дополнительной информации. https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html#sysvar_log_bin_trust_function_creators

0 голосов
/ 12 июля 2020

Кто-то с СУПЕР привилегией должен предоставить ее вам или создать свой триггер самостоятельно. Это то же самое, что и Administrator priv на Windows или root priv на * nix.

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