web-dev-qa-db-fra.com

Utilisation de log_bin_trust_function_creators dans MySQL

À quoi sert log_bin_trust_function_creators? De plus, la valeur du paramètre est-elle dynamique? Cela changera-t-il si je redémarre mon service MySQL?

14
tesla747

Cette variable contrôle si la journalisation binaire doit faire confiance aux créateurs de fonctions stockées pour ne pas créer de fonctions stockées qui provoqueront des événements dangereux. Par exemple. ayant des fonctions UUID.

Cela a été bien expliqué dans la documentation:

Lorsque vous créez une fonction stockée, vous devez déclarer qu'elle est déterministe ou qu'elle ne modifie pas les données. Sinon, il peut être dangereux pour la récupération ou la réplication de données.

Par défaut, pour qu'une instruction CREATE FUNCTION soit acceptée, au moins l'une des données DETERMINISTIC, NO SQL ou READS SQL DATA doit être spécifiée explicitement. Sinon, une erreur se produit:

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)

Pour assouplir les conditions précédentes sur la création de fonction (que vous devez avoir le privilège SUPER et qu'une fonction doit être déclarée déterministe ou pour ne pas modifier les données), définissez la variable système globale log_bin_trust_function_creators sur 1.

Référence: mysql-documentation (lisez ceci comme il l'explique avec l'exemple.)

À propos de votre deuxième question, si elle est dynamique et changera-t-elle si vous redémarrez le serveur:

  • Oui, c'est une variable dynamique.

  • La variable changera au redémarrage, si vous ne mettez pas à jour la configuration pour refléter le changement.

Référence: mysql-documentation-again

14
mysql_user