Wofür ist das gut log_bin_trust_function_creators
? Ist der Wert des Parameters auch dynamisch? Wird sich das ändern, wenn ich meinen MySQL-Dienst neu starte?
quelle
Wofür ist das gut log_bin_trust_function_creators
? Ist der Wert des Parameters auch dynamisch? Wird sich das ändern, wenn ich meinen MySQL-Dienst neu starte?
Diese Variable steuert, ob die binäre Protokollierung den Erstellern gespeicherter Funktionen vertrauen soll, um keine gespeicherten Funktionen zu erstellen, die unsichere Ereignisse verursachen. Z.B. mit UUID-Funktionen.
Dies wurde in der Dokumentation gut erklärt:
Wenn Sie eine gespeicherte Funktion erstellen, müssen Sie entweder angeben, dass sie deterministisch ist oder dass sie keine Daten ändert. Andernfalls ist es möglicherweise nicht sicher für die Datenwiederherstellung oder -replikation.
Standardmäßig muss mindestens eines von DETERMINISTIC, NO SQL oder READS SQL DATA explizit angegeben werden, damit eine CREATE FUNCTION-Anweisung akzeptiert wird. Andernfalls tritt ein Fehler auf:
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)
Setzen Sie die globale Systemvariable log_bin_trust_function_creators auf 1, um die vorherigen Bedingungen bei der Funktionserstellung zu lockern (Sie müssen über das SUPER-Privileg verfügen und eine Funktion muss als deterministisch deklariert werden oder um Daten nicht zu ändern).
Referenz: mysql-documentation (lesen Sie dies wie am Beispiel erklärt.)
Zu Ihrer zweiten Frage, ob sie dynamisch ist und sich ändern wird, wenn Sie den Server neu starten:
Ja, es ist eine dynamische Variable.
Die Variable ändert sich beim Neustart, wenn Sie die Konfiguration nicht aktualisieren, um die Änderung widerzuspiegeln.
Referenz: mysql-documentation-again
mysql> select if(1 is true,'TRUE','FALSE')\G *************************** 1. row *************************** if(1 is true,'TRUE','FALSE'): TRUE