¿De qué sirve log_bin_trust_function_creators
? Además, ¿es dinámico el valor del parámetro? ¿Cambiará si reinicio mi servicio MySQL?
fuente
¿De qué sirve log_bin_trust_function_creators
? Además, ¿es dinámico el valor del parámetro? ¿Cambiará si reinicio mi servicio MySQL?
Esta variable controla si el registro binario debe confiar en los creadores de funciones almacenadas para no crear funciones almacenadas que causen eventos inseguros. P.ej. teniendo funciones UUID.
Esto se ha explicado bien en la documentación:
Cuando crea una función almacenada, debe declarar que es determinista o que no modifica los datos. De lo contrario, puede no ser seguro para la recuperación o replicación de datos.
De forma predeterminada, para que se acepte una instrucción CREATE FUNCTION, al menos uno de DETERMINISTIC, NO SQL o READS SQL DATA debe especificarse explícitamente. De lo contrario, se produce un error:
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 relajar las condiciones anteriores sobre la creación de funciones (que debe tener el privilegio SUPER y que una función debe declararse determinista o no modificar datos), establezca la variable de sistema global log_bin_trust_function_creators en 1.
Referencia: mysql-documentation (lea esto como se explica con el ejemplo).
Sobre su segunda pregunta, si es dinámica y cambiará si reinicia el servidor:
Sí, es una variable dinámica.
La variable cambiará al reiniciar, si no actualiza la configuración para reflejar el cambio.
Referencia: mysql-documentation-again
mysql> select if(1 is true,'TRUE','FALSE')\G *************************** 1. row *************************** if(1 is true,'TRUE','FALSE'): TRUE