MySQLでのlog_bin_trust_function_creatorsの使用


14

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

回答:


12

この変数は、安全でないイベントを引き起こすストアドファンクションを作成しないために、バイナリロギングがストアドファンクション作成者を信頼するかどうかを制御します。例えば。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


ブール値を取りますか?正しいことは、私にとってはTRUEに設定されています。それは「1」であることを意味しますか?
tesla747

mysql> select if(1 is true,'TRUE','FALSE')\G *************************** 1. row *************************** if(1 is true,'TRUE','FALSE'): TRUE
mysql_user

わかりました。しかし、特にそのパラメーターについては、「1」に変更する必要がありますか?TRUEに設定したので、mysqlサービスを再起動すると再び変更されます
-tesla747

1
そのとおり!したがって、永続化するには、my.cnfファイルにも同じ構成値を設定する必要があります。
mysql_user

1
@ tesla747うん...それはバイナリロギングが有効なときに適用されます。
mysql_user
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.