Не удается создать триггер MySQL с привилегией TRIGGER в 5.1.32 - PullRequest
12 голосов
/ 27 октября 2009

Мои коллеги-разработчики и я имеем собственные схемы разработки в общей базе данных разработки MySQL. Мое назначение требует от меня создания триггеров в моей схеме, но я пока не добился успеха.

CREATE TRIGGER myTrigger AFTER DELETE on myTable
FOR EACH ROW BEGIN
    -- DO STUFF
END;

MySQL говорит: ОШИБКА 1419 (HY000): у вас нет привилегии SUPER и двоичное ведение журнала включено (вы могли бы хотеть использовать менее безопасную переменную log_bin_trust_function_creators)

Я проверил руководство MySQL (http://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html):

Привилегия TRIGGER позволяет создавать и удалять триггеры. Вы должны иметь эту привилегию для таблицы, чтобы создавать или удалять триггеры для этой таблицы. Эта привилегия была добавлена ​​в MySQL 5.1.6. (До MySQL 5.1.6 для операций триггера требовалась привилегия SUPER.)

Мы запускаем "5.1.32-enterprise-gpl-advanced-log", поэтому привилегия TRIGGER должна быть достаточной; однако администратор БД предоставил мне привилегию TRIGGER для mySchema. *, и я вижу ее, когда выполняю SHOW GRANTS; все же я получаю эту ошибку о необходимости привилегии «SUPER». Мы не хотим давать всем разработчикам СУПЕР.

Есть предложения?

1 Ответ

13 голосов
/ 27 октября 2009

Вот отчет об ошибке для этого . Одним из вариантов является запуск с Включена опция --log-bin-trust-function-creators, которая позволит вам создавать триггеры без привилегии SUPER. Эта страница объясняет, что означает включение этой опции. В основном это связано с тем, считает ли MySQL ваши триггеры детерминированными (то есть безопасными для репликации). Ваш DBA может или не может комфортно работать в этом режиме. Это не идеально, но лучше, чем выдавать СУПЕР ...

ОБНОВЛЕНИЕ: Документы по второй ссылке фактически создают впечатление, что вы можете обойти это, используя репликацию на основе строк или даже смешанную репликацию. По крайней мере, это сделало бы его безопасным для репликации. Не знаю, нужно ли вам по-прежнему иметь СУПЕР, но стоит попробовать.

...