MySQL 슬레이브 서버는 마스터 서버의 바이너리 로그(binary log)에서 읽어 들인 모든 문장을 그대로 실행할 수 있는 권한을 가지고 있습니다. 이러한 구조적 특성 때문에 복제(replication) 환경에서 저장 함수(stored function)를 사용할 때는 몇 가지 특별한 보안 제약이 따릅니다.
복제 기능이 활성화되어 있거나, 시점 복구(point-in-time recovery)를 목적으로 바이너리 로깅을 사용하고 있다면 MySQL DBA는 아래 두 가지 보안 옵션 중 하나를 선택해야 합니다.
옵션 1: SUPER 권한 부여
저장 함수를 생성하려는 모든 사용자에게 DBA가 SUPER 권한을 직접 부여하는 방식입니다. 이 방법은 권한 통제가 엄격하다는 장점이 있지만, 일반 개발자에게 강력한 SUPER 권한을 넘겨야 한다는 보안상 부담이 있을 수 있습니다.
옵션 2: log_bin_trust_function_creators 모드 활성화
DBA가 log_bin_trust_function_creators 시스템 변수를 1로 설정하면, 표준적인 CREATE ROUTINE 권한만 가진 사용자도 SUPER 권한 없이 저장 함수를 생성할 수 있습니다. 이 방식은 권한 관리가 훨씬 유연하여, 실무에서는 불필요한 SUPER 권한 확산을 막기 위해 이 옵션을 선호하는 경우가 많습니다.
다만 이 변수를 활성화하면 바이너리 로깅의 안전성 검증이 완화된다는 점을 인지하고, 신뢰할 수 있는 사용자에게만 함수 생성 권한을 부여하는 것이 좋습니다.