[Database][MySQL] Trigger, Function 생성 시 Super 권한이 없을 때 - log_bin_trust_function_creators

koline·2024년 7월 9일
0

Database

목록 보기
3/4

스키마를 생성할 때 해당 스키마에 대한 모든 권한을 가지는 사용자를 생성하고 해당 사용자를 통해 해당 스키마에 접근하게 된다.

그러나 이렇게 생성된 사용자도 Trigger 또는 Fucntion을 생성하려고 하면 아래와 같은 에러가 발생한다.

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 권한이 없으므로, mysql global variable 중 log_bin_trust_function_creators를 사용하라는 것이다 (약간 덜 안전하지만).

log_bin_trust_function_creators 옵션은 MySQL이 function, trigger 생성에 대한 제약을 강제할 수 있는 기능이다.

이 옵션은 기본으로 꺼져있어서(OFF) 사용자 생성 후 이 옵션을 켜지 않으면 아무리 모든 권한을 가지고 있어도 Super 권한 (root 권한)이 없으니 trigger나 function을 생성할 수 없다.




변경하는 법


show global variables like 'log_bin_trust_function_creators';

위 쿼리를 통해 log_bin_trust_function_creators 옵션이 켜져있는지 확인한다.

+------------------------------------+---------+
| Variable_name         | Value  |
+------------------------------------+---------+
| log_bin_trust_function_creators | OFF  |
+------------------------------------+---------+

위와 같은 결과가 나온다면 log_bin_trust_function_creators 옵션이 꺼져있는 것이다.

SET GLOBAL  log_bin_trust_function_creators=ON;

+------------------------------------+---------+
| Variable_name         | Value  |
+------------------------------------+---------+
| log_bin_trust_function_creators | ON   |
+------------------------------------+---------+

profile
개발공부를해보자

0개의 댓글

관련 채용 정보