回答:
この変数は、安全でないイベントを引き起こすストアドファンクションを作成しないために、バイナリロギングがストアドファンクション作成者を信頼するかどうかを制御します。例えば。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
mysql> select if(1 is true,'TRUE','FALSE')\G *************************** 1. row *************************** if(1 is true,'TRUE','FALSE'): TRUE