web-dev-qa-db-ja.com

MySQLでのlog_bin_trust_function_creatorsの使用

log_bin_trust_function_creatorsの用途は何ですか?また、パラメーターの値は動的ですか? MySQLサービスを再起動すると変更されますか?

14
tesla747

この変数は、安全でないイベントの原因となるストアド関数を作成しないように、バイナリロギングがストアド関数の作成者を信頼するかどうかを制御します。例えば。 UUID機能を持っています。

これはドキュメントでよく説明されています:

ストアドファンクションを作成するときは、確定的であること、またはデータを変更しないことを宣言する必要があります。それ以外の場合は、データの回復や複製には安全ではない可能性があります。

デフォルトでは、CREATE FUNCTIONステートメントを受け入れるには、DETERMINISTIC、NO SQL、またはREADS SQL DATAの少なくとも1つを明示的に指定する必要があります。そうでない場合、エラーが発生します。

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

関数の作成に関する上記の条件を緩和するには(SUPER特権が必要であり、関数を確定的に宣言するか、データを変更しないようにする必要があります)、グローバルlog_bin_trust_function_creatorsシステム変数を1に設定します。

参照: mysql-documentation (例で説明されているようにこれを読んでください。)

2番目の質問について、それが動的で、サーバーを再起動すると変化するかどうか:

  • はい、それは動的変数です。

  • 構成を更新して変更を反映しない場合、変数は再起動時に変更されます。

リファレンス: mysql-documentation-again

14
mysql_user