it-swarm.com.de

Verwendung von log_bin_trust_function_creators in MySQL

Wozu benutzt man log_bin_trust_function_creators? Ist der Wert des Parameters auch dynamisch? Wird sich das ändern, wenn ich meinen MySQL-Dienst neu starte?

14
tesla747

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 deklarieren, dass sie deterministisch ist oder keine Daten ändert. Andernfalls ist die Datenwiederherstellung oder -replikation möglicherweise nicht sicher.

Standardmäßig muss mindestens eine der Anweisungen 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 vorhergehenden Bedingungen für die Funktionserstellung zu lockern (Sie müssen über das SUPER-Privileg verfügen und eine Funktion als deterministisch deklariert sein oder keine Daten ändern).

Referenz: MySQL-Dokumentation (Lesen Sie dies wie im Beispiel erläutert.)

Zu Ihrer zweiten Frage, ob sie dynamisch ist und sich ändert, 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-Dokumentation-wieder

14
mysql_user