Para que serve log_bin_trust_function_creators
? Além disso, o valor do parâmetro é dinâmico? Isso mudará se eu reiniciar meu serviço MySQL?
fonte
Para que serve log_bin_trust_function_creators
? Além disso, o valor do parâmetro é dinâmico? Isso mudará se eu reiniciar meu serviço MySQL?
Essa variável controla se o log binário deve confiar nos criadores da função armazenada para não criar funções armazenadas que causarão eventos inseguros. Por exemplo. tendo funções UUID.
Isso foi explicado bem na documentação:
Ao criar uma função armazenada, você deve declarar que é determinista ou que não modifica dados. Caso contrário, pode não ser seguro para recuperação ou replicação de dados.
Por padrão, para que uma instrução CREATE FUNCTION seja aceita, pelo menos um dos DETERMINISTIC, NO SQL ou READS SQL DATA deve ser especificado explicitamente. Caso contrário, ocorre um erro:
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)
Para relaxar as condições anteriores na criação da função (que você deve ter o privilégio SUPER e que uma função deve ser declarada determinística ou não modificar dados), configure a variável global do sistema log_bin_trust_function_creators como 1.
Referência: mysql-documentation (leia isso como explica o exemplo).
Sobre sua segunda pergunta, se é dinâmica e será alterada se você reiniciar o servidor:
Sim, é uma variável dinâmica.
A variável será alterada após a reinicialização, se você não atualizar a configuração para refletir a alteração.
Referência: mysql-documentation-again
mysql> select if(1 is true,'TRUE','FALSE')\G *************************** 1. row *************************** if(1 is true,'TRUE','FALSE'): TRUE