[AWS] MYSQL - You do not have the SUPER privilege and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)

심대용·2021년 5월 25일

AWS

목록 보기
1/1

[AWS] MYSQL - You do not have the SUPER privilege and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)

1. 트리거 추가

DROP TRIGGER IF EXISTS delete_logging_trigger
DELIMITER $$
CREATE TRIGGER delete_logging_trigger AFTER DELETE ON GA_MATCH
    FOR EACH ROW    
BEGIN
	INSERT INTO GA_MATCH_LOG (bundle_id, match_type, content_id, delete_flag, intelligent_match_flag,regdatetime, updatetime, log_info) 
    VALUES (OLD.bundleId , OLD.matchType, OLD.content_id, OLD.del_yn, OLD.intelligent_match_flag, OLD.regdatetime, OLD.updatetime, 'DELETE_OLD');    
END $$
DELIMITER ;

2. 권한 에러. 트리거를 사용하기 위해 권한 변경 필요.

-- 15:35:07	CREATE TRIGGER insert_logging_trigger AFTER INSERT ON GA_MATCH     FOR EACH ROW     BEGIN  INSERT INTO GA_MATCH_LOG (bundle_id, match_type, content_id, delete_flag, intelligent_match_flag,regdatetime, updatetime, log_info)      VALUES (NEW.bundleId , NEW.matchType, NEW.content_id, NEW.del_yn, NEW.intelligent_match_flag, NEW.regdatetime, NEW.updatetime, 'INSERT_NEW'); END	
-- Error Code: 1419. You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)	0.179 sec

3. 권한 값 변경. SQL로

SET Global log_bin_trust_function_creators='ON';

4. 값 변경 실패. AWS RDS는 SQL로 변경 불가능.?

-- 15:59:46	SET Global log_bin_trust_function_creators='ON'	
-- Error Code: 1227. Access denied; you need (at least one of) the SUPER privilege(s) for this operation	0.177 sec
Amazon RDS는 관리형 서비스이며 SYS 액세스(SUPER 권한)를 제공하지 않습니다. MySQL DB 인스턴스에서 바이너리 로깅을 활성화한 경우 DB 인스턴스에 대해 생성하는 사용자 지정 DB 파라미터 그룹에서 log_bin_trust_function_creators 파라미터를 true로 설정합니다. 자세한 내용은 Amazon RDS의 마스터 사용자 계정 권한을 참조하세요.

5. AWS RDS는 Prameter Groups으로 값 변경

-- 아마존 RDS를 사용중이라면 MySQL 프로시저 생성하려 할때 아래와 같은 권한에러가 발생하게 된다.
-- 디폴트로 SUPER권한이 부여되지 않기 때문인데 해결방법을 공유한다.
-- 1. RDS메뉴에서 Prameter Groups을 클릭
-- 2. log_bin_trust_function_creators 값을 0 -> 1 로 변경
Prameter Groups이 수정이 안될경우는 사용자 파라미터를 추가한후 진행하면 된다.
디비를 처음 생성할때 만들어지는 디폴트 파라미터그룹은 수정이 불가하다.

이름 // 값 // 허용된 값 // 수정 가능 // 소스 // 적용 유형 // 데이터 형식 // 설명
log_bin_trust_function_creators // 1 // 0, 1 //  true // user // dynamic // boolean // Enforces restrictions on stored functions / triggers - logging for replication.

--dynamic 으로 바로 DB에 반영. Reboot(X)
--파라미터 결과 내용중 "ApplyType" 이 Dynamic 인 경우에는 동적으로 변경이 가능 하고, Static 인 경우에는 Rebooting 을 통해 서만 변경이 가능 하다.

url:

https://mysqldba.tistory.com/59
https://blog.chulgil.me/how-to-use-procedure-in-aws-mysql/
https://aws.amazon.com/ko/premiumsupport/knowledge-center/rds-mysql-functions/
https://effectivesquid.tistory.com/entry/AWS-RDS-MySQL%EC%97%90%EC%84%9C-database-super-%EA%B6%8C%ED%95%9C-%ED%96%89%EC%82%AC%ED%95%98%EA%B8%B0
https://soye0n.tistory.com/271
https://aws.amazon.com/ko/premiumsupport/knowledge-center/rds-modify-parameter-group-values/
https://blog.naver.com/PostView.nhn?blogId=dorian0520&logNo=221306380631&parentCategoryNo=&categoryNo=12&viewDate=&isShowPopularPosts=true&from=search
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html#USER_WorkingWithParamGroups.Modifying

profile
어제보다 더 성장하는 나

0개의 댓글