他人が構築したDBを引き継ぐのは、嫌なもので状況を把握しないまま、
MySQL ストアドファンクションを追加したら、
Error Code: 1419. 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)
マニュアルには、こう書いてある。
「バイナリロギングを有効にしているサーバーに対するこの危険から保護するために、
ストアドファンクションの作成者は、必要な通常の CREATE ROUTINE 権限に加え、SUPER 権限も持つ必要があります。
同様に、ALTER FUNCTION を使用するには、ユーザーは ALTER ROUTINE 権限に加え、SUPER 権限を持つ必要があります。
SUPER 権限がないと、エラーが発生します。」
しかたないので、権限のある root で入り、log_bin_trust_function_creators を調べる。
mysql> SHOW VARIABLES LIKE 'log_bin_trust_function_creators'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin_trust_function_creators | OFF | +---------------------------------+-------+
なので、ONにするために、
mysql> set global log_bin_trust_function_creators=1; Query OK, 0 rows affected (0.00 sec)
確認、
mysql> SHOW VARIABLES LIKE 'log_bin_trust_function_creators'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin_trust_function_creators | ON | +---------------------------------+-------+ 1 row in set (0.00 sec)
これで、無事、ストアドファンクション生成できるようになる。