13

仲間の開発者と私は、共有の MySQL 開発データベース上に独自の開発スキーマを持っています。私の割り当てでは、自分のスキーマにトリガーを作成する必要がありますが、これまでのところ成功していません。

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

MySQL のメッセージ: ERROR 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 権限で十分です。ただし、DBA からmySchema.* に対する TRIGGER 権限が付与されており、SHOW GRANTS; を実行すると確認できますが、「SUPER」権限が必要であるというエラーが引き続き表示されます。すべての開発者に SUPER を与えたいわけではありません。

助言がありますか?

4

1 に答える 1

15

この のバグ レポートは次のとおりです。1 つのオプションは、 --log-bin-trust-function-creators オプションをオンにして実行することです。これにより、SUPER 権限なしでトリガーを作成できます。 このページでは、そのオプションをオンにすることの意味について説明します。基本的には、MySQL がトリガーが決定論的 (つまり、レプリケーションに対して安全) であると判断するかどうかに関係しています。DBA は、そのモードでの実行に慣れている場合とそうでない場合があります。理想的ではありませんが、SUPER を配るよりはましです...

更新: 2 番目のリンクのドキュメントでは、行ベースのレプリケーションや混合モードのレプリケーションを使用することで、これを回避できるように思われます。少なくとも、それは複製に対して安全になります。SUPERが必要かどうかはわかりませんが、試してみる価値はあります。

于 2009-10-27T03:38:47.307 に答える