Jakie jest zastosowanie log_bin_trust_function_creators
? Ponadto, czy wartość parametru jest dynamiczna? Czy to się zmieni, jeśli ponownie uruchomię usługę MySQL?
źródło
Jakie jest zastosowanie log_bin_trust_function_creators
? Ponadto, czy wartość parametru jest dynamiczna? Czy to się zmieni, jeśli ponownie uruchomię usługę MySQL?
Ta zmienna kontroluje, czy rejestrowanie binarne powinno ufać twórcom funkcji przechowywanych, że nie będą tworzyć funkcji przechowywanych, które spowodują niebezpieczne zdarzenia. Na przykład. posiadające funkcje UUID.
Zostało to dobrze wyjaśnione w dokumentacji:
Podczas tworzenia funkcji składowanej należy zadeklarować, że jest ona deterministyczna lub nie modyfikuje danych. W przeciwnym razie odzyskiwanie lub replikacja danych może być niebezpieczne.
Domyślnie, aby zaakceptować instrukcję CREATE FUNCTION, co najmniej jedno z DETERMINISTIC, NO SQL lub READS SQL DATA musi być wyraźnie określone. W przeciwnym razie wystąpi błąd:
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)
Aby złagodzić powyższe warunki tworzenia funkcji (że musisz mieć uprawnienie SUPER i że funkcja musi być zadeklarowana jako deterministyczna lub aby nie modyfikować danych), ustaw globalną zmienną systemową log_bin_trust_function_creators na 1.
Odwołanie: dokumentacja mysql (przeczytaj to, jak to wyjaśnia na przykładzie).
O drugie pytanie, czy jest dynamiczne i czy zmieni się po ponownym uruchomieniu serwera:
Tak, jest to zmienna dynamiczna.
Zmienna zmieni się po ponownym uruchomieniu, jeśli nie zaktualizujesz konfiguracji, aby odzwierciedlić zmianę.
Odniesienie: mysql-dokumentacja-znowu
mysql> select if(1 is true,'TRUE','FALSE')\G *************************** 1. row *************************** if(1 is true,'TRUE','FALSE'): TRUE