Uso de log_bin_trust_function_creators en MySQL

Respuestas:

12

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_user
fuente
¿toma un valor booleano? Correcto, está configurado como VERDADERO para mí ... ¿eso significa que es '1'?
tesla747
mysql> select if(1 is true,'TRUE','FALSE')\G *************************** 1. row *************************** if(1 is true,'TRUE','FALSE'): TRUE
mysql_user
Ok, entiendo eso. ¿Pero es necesario cambiarlo a '1' particularmente para ese parámetro? Ahora desde que puse como TRUE, cuando reinicie el servicio MySQL va a cambiar de nuevo
tesla747
1
¡Así es! Por lo tanto, para que sea persistente, también debe poner el mismo valor de configuración en su archivo my.cnf.
mysql_user
1
@ tesla747 sí ... se aplica cuando el registro binario está habilitado.
mysql_user