django.db.utils.OperationalError: (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)')
RDS에서 trigger를 생성할 때 이런 문제가 발생했다. 사용중인 user에게 SUPER 권한이 없는 문제다. 이를 해결하기 위해 SUPER 권한이 있는 유저를 사용하거나 log_bin_trust_function_creators를 ON으로 수정하면 된다.
log_bin_trust_function_creators을 수정할 때 발생할 수 있는 문제는 RDS가 default parameter group을 사용하는 경우인데, 이건 변경이 불가능하다. 새로운 patermeter group을 만들어서 log_bin_trust_function_creators를 수정한다고 해도 RDS를 재시작해야하는 문제가 생긴다.
이렇게 몇가지 문제가 있을 때 RDS에 콘솔로 접근해서 USER에게 trigger 권한을 주고, log_bin_trust_function_creators을 변경해야 한다.
그냥 변경하면 [42000][1227] Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s) for this operation
이런 에러가 뜰 수도 있다.
SUPER 권한이나 SYSTEM_VARIABLES_ADMIN 권한을 가진 유저가 필요하다는건데 SUPER 권한은 앞서 언급했으므로 SYSTEM_VARIABLES_ADMIN 권한을 부여하면 문제가 해결된다.
datagrip에서 Server Objects -> users -> 사용 중인 user 우클릭 -> Modify User... -> Grants에서 + 클릭하고 server, SYSTEM_VARIABLES_ADMIN 추가하기.
설정이 완료되면 trigger를 생성하면 된다.
CREATE TRIGGER insert_xxx_trigger
AFTER INSERT
ON yyy
FOR EACH ROW
BEGIN
INSERT INTO xxx (id, email, verification_code,
deadline, is_deleted, created_at, updated_at)
VALUES (NEW.id, NEW.email, NEW.num, NEW.due,
false, NEW.created_at, NEW.modified_at);
END;