Використання log_bin_trust_function_creators в MySQL


14

В чому користь log_bin_trust_function_creators? Також, чи є значення параметра динамічним? Чи зміниться це, якщо я перезапущу службу MySQL?

Відповіді:


14

Ця змінна управляє тим, чи слід двійковому журналу довіряти створювачам збережених функцій, щоб не створювати збережені функції, які спричинять небезпечні події. Напр. що мають функції 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-документація-знову


чи приймає булеве значення? Правильно, для мене встановлено ІСТИЧНЕ .. це означає, що це "1"?
tesla747

mysql> select if(1 is true,'TRUE','FALSE')\G *************************** 1. row *************************** if(1 is true,'TRUE','FALSE'): TRUE
mysql_user

Добре, я це розумію. Але чи потрібно змінити його на "1", особливо для цього параметра? Тепер, оскільки я встановив це як ІСТИНА, коли я перезавантажую службу mysql, вона знову зміниться
tesla747

1
Це вірно! Отже, щоб зробити його стійким, слід також ввести у файл my.cnf те саме значення конфігурації.
mysql_user

1
@ tesla747 так ... це застосовується, коли ввімкнено двійковий журнал.
mysql_user
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.