14.3 스토어드 프로그램의 보안 옵션
- 8.0 부터
- super 권한을 오브젝트 별로 세분화
- create routine, alter routine, execute 권한 분리
- trigger, event 권한 분리
DEFINER와 SQL SECURITY 옵션
- DEFINER: 스토어드 프로그램의 소유권(생성 사용자), 스토어드 프로그램 실행 권한
- SQL SECURITY: 스토어드 프로그램을 실행할 때 누구의 권한으로 실행할지 결정하는 옵션
- INVOKER or DEFINER 중 하나 선택
- INVOKER 는 스토어드 프로그램 호출 사용자를 의미
- 해당 스토어드 프로그램의 SQL SECURITY가
- DEFINER 로 설정되어 있다면
- 스토어드 프로그램을 실행할때 DEFINER 로 지정된 계정으로 실행됨
- INVOKER 로 설정되어 있다면
- 스토어드 프로그램을 실행할때 호출자의 계정으로 실행됨
- 내부에 호출자가 호출하면 안될 권한이 있다면 보안에 안정적일 수 있음
DETERMINISTIC, NOT DETERMINISTIC 옵션
- 성능과 관련된 옵션
- 둘중 하나는 무조건 설정
- DETERMINISTIC: 한 쿼리 내에서 실행 한번하고 재사용
- NOT DETERMINISTIC: 시점에 따라 결과가 다를 수 있음, 비교하는 레코드마다 재실행
- 상수가 될 수 없음 → 인덱스 사용 불가
- 고로 DETERMISTIC 사용 권장
14.4 스토어드 프로그램의 참고 및 주의 사항
한글 처리
- 스토어드 프로그램 내 코드에 한글이 들어있으면 깨질 위험이 있음