개발 한 스푼/MySQL

you do not have the SUPER privilege (Error Code: 1419)

idleday 2023. 9. 20. 10:02

문제

mysql 함수생성시 위 메시지 발생

You do not have the SUPER privilege and binary logging is enabled

 

원인

MySQL 전역변수 log_bin_trust_function_creators 속성

 

이 속성은 MySQL이 stored function과 trigger 생성에 제약을 강제할 수 있는 기능을 가진 속성으로

OFF로 설정시 CREATE ROUTINE 권한이 있어도 trigger 나 procedure 생성을 할 수 없다.

 

log_bin_trust_function_creators 값은 default가 OFF

해당 속성 enable시 MySQL 입장에서 function에 대한 안정성 체크를 하지 않게 된다.

 

 

데이터베이스 서버가 마스터와 슬레이브 두대를 사용할 경우, (현재 회사 DB서버 백업설정이 이와 같다)

마스터 데이터 변경시 바이너리 로그를 사용하여 데이터를 복제하는데

stored 프로그램에서 데이터를 변경할 경우 데이터를 복제하지 못한다고 한다.

 

그래서 마스터와 슬레이브 형태의 서버를 운영할 경우 데이터 불일치 문제가 발생할수 있으므로

아래의 변수를 설정하지않으면 에러가 발생하도록 만든것 같다.

 

 

 

해결방법

 

1. 전역변수 값 수정

 

MySQL root 계정으로 로그인 한 후 log_bin_trust_function_creators 전역 변수 속성을 ON으로 설정하면 일반 계정으로도 함수, 트리거 생성 가능하게 된다. 

SET Global log_bin_trust_function_creators='ON'

동적으로 수정이 가능하므로 서버를 재시작할 필요는 없다.

 

mysql 실행시 항상 적용하고싶다면 my.cnf파일 [mysqld] 섹션에 아래 명령어 추가

SET global log_bin_trust_function_creators=1;

 

2. 생성 작업을 하는 계정에 super 권한을 주고 생성한다.

 

 

해결과정 

log_bin_trust_function_creators 전역변수를 까봤다. 

 

ON으로 바꾸려면 root 계정이나, SUPER 권한을 가진 계정에서 작업해야 한다.

방법 1로든 2로든 root  계정으로 접속해서 전역변수 설정 변경하기~

 


ref

http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html

http://dev.mysql.com/doc/refman/5.0/en/stored-programs-logging.html 

 

https://blog.naver.com/kwonhjae/30146442720

https://www.lesstif.com/dbms/mysql-1419-error-you-do-not-have-the-super-privilege-and-binary-logging-is-enabled-106856957.html

https://mysqldba.tistory.com/59