ストアドファンクション生成 Error Code: 1419

他人が構築した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)

これで、無事、ストアドファンクション生成できるようになる。