Использование log_bin_trust_function_creators в MySQL

14

Какая польза от log_bin_trust_function_creators? Кроме того, является ли значение параметра динамическим? Изменится ли он, если я перезапущу свой MySQL сервис?

tesla747
источник

Ответы:

12

Эта переменная определяет, должно ли двоичное ведение журнала доверять создателям хранимых функций, чтобы они не создавали хранимые функции, которые будут вызывать небезопасные события. Например. имея функции UUID.

Это было хорошо объяснено в документации:

Когда вы создаете хранимую функцию, вы должны объявить, что она является детерминированной или что она не изменяет данные. В противном случае это может быть небезопасно для восстановления или репликации данных.

По умолчанию для принятия оператора CREATE FUNCTION необходимо явно указать хотя бы одно из DETERMINISTIC, NO SQL или READS SQL DATA. В противном случае возникает ошибка:

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)

Чтобы ослабить предыдущие условия при создании функции (что вы должны иметь привилегию SUPER и что функция должна быть объявлена ​​детерминированной или не изменять данные), задайте для глобальной системной переменной log_bin_trust_function_creators значение 1.

Ссылка: mysql-документация (прочитайте, как это объясняется на примере.)

О вашем втором вопросе, если он динамический и изменится ли он при перезагрузке сервера:

  • Да, это динамическая переменная.

  • Переменная изменится при перезапуске, если вы не обновите конфигурацию, чтобы отразить изменение.

Ссылка: mysql-Документация-снова

mysql_user
источник
это принимает логическое значение? Правильно, это установлено на TRUE для меня ... это значит, что это «1»?
tesla747
mysql> select if(1 is true,'TRUE','FALSE')\G *************************** 1. row *************************** if(1 is true,'TRUE','FALSE'): TRUE
mysql_user
Хорошо, я понимаю это. Но необходимо ли изменить его на «1», особенно для этого параметра? Теперь, так как я установил его как TRUE, при перезапуске службы mysql он снова изменится
tesla747
1
Это верно! Поэтому, чтобы сделать его постоянным, вы должны поместить то же самое значение конфигурации в файл my.cnf.
mysql_user
1
@ tesla747 да ... это применимо, когда двоичное ведение журнала включено.
mysql_user