MySQL에서 log_bin_trust_function_creators 사용


답변:


13

이 변수는 안전하지 않은 이벤트를 유발하는 저장된 함수를 작성하지 않도록 바이너리 로깅이 저장된 함수 작성자를 신뢰해야하는지 여부를 제어합니다. 예 : 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-documentation (예제와 같이 설명하십시오.)

두 번째 질문은 동적이며 서버를 다시 시작하면 변경됩니다.

  • 예, 동적 변수입니다.

  • 변경 사항을 반영하도록 구성을 업데이트하지 않으면 변수는 다시 시작할 때 변경됩니다.

참조 : mysql-documentation-again


부울 값이 필요합니까? 맞습니다. 그것은 나를 위해 참으로 설정되어 있습니다. 그것이 '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 yep ... 바이너리 로깅이 활성화되면 적용됩니다.
mysql_user
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.