왜 SET DEFAULT ROLE을 알아야 할까?
MySQL 사용자 권한을 보다 유연하고 안전하게 관리하려면, 단순한 GRANT 문만으로는 부족합니다. 특히 다양한 역할(Role)을 부여해 사용자 접근 권한을 세밀하게 조정하려면 SET DEFAULT ROLE 문을 이해하고 활용할 필요가 있습니다. 이 글에서는 MySQL에서 SET DEFAULT ROLE이 어떤 역할을 하는지, 어떻게 사용하는지, 그리고 실무에서 어떻게 응용할 수 있는지를 쉽게 풀어보겠습니다.
1. SET DEFAULT ROLE이란?
SET DEFAULT ROLE은 MySQL의 사용자에게 로그인 시 기본적으로 활성화될 역할(role)을 지정하는 명령어입니다. 이는 MySQL 8.0 이상에서 지원되며, 역할 기반 권한 관리(RBAC: Role-Based Access Control)의 핵심 기능 중 하나입니다.
SET DEFAULT ROLE 'developer' TO 'user1';
위 예시는 user1이 로그인할 때 자동으로 developer 역할이 활성화되도록 설정하는 명령입니다. 이를 통해 사용자는 매번 SET ROLE 명령을 수동으로 입력하지 않아도 됩니다.
2. 기본 사용 방법과 예제
다음은 기본적인 사용 흐름입니다:
- 역할 생성:
CREATE ROLE 'developer';
- 권한 부여:
GRANT SELECT, INSERT ON db1.* TO 'developer';
- 사용자에게 역할 부여:
GRANT 'developer' TO 'user1';
- 기본 역할 설정:
SET DEFAULT ROLE 'developer' TO 'user1';
이렇게 설정하면 user1이 로그인할 때 developer 역할의 권한이 자동으로 활성화됩니다.
3. 여러 역할과 복잡한 구성
MySQL은 하나의 사용자에게 여러 역할을 부여할 수 있습니다. SET DEFAULT ROLE은 다음과 같이 복수의 역할도 지정 가능합니다:
SET DEFAULT ROLE 'developer', 'report_reader' TO 'user1';
또는 모든 역할을 기본으로 활성화하고 싶다면:
SET DEFAULT ROLE ALL TO 'user1';
반대로 로그인 시 아무 역할도 기본으로 활성화하지 않도록 하려면:
SET DEFAULT ROLE NONE TO 'user1';
4. 주의사항 및 MySQL 버전 정보
- SET DEFAULT ROLE은 MySQL 8.0부터 도입된 기능입니다. 5.7 이하에서는 사용할 수 없습니다.
- 기본 역할은 mysql.default_roles 시스템 테이블에 저장되며, 사용자가 로그인할 때 이를 참조해 자동 활성화됩니다.
- SET DEFAULT ROLE을 실행하려면 SET DEFAULT ROLE 권한이 필요합니다.
결론 및 실무 팁
MySQL의 SET DEFAULT ROLE 문은 역할 기반 접근 제어를 보다 유연하게 구성할 수 있게 해주는 강력한 도구입니다. 실무에서 여러 역할을 활용하는 경우, 이 문법을 통해 사용자 경험을 개선하고 보안을 강화할 수 있습니다.
실무 팁:
- 모든 사용자에게 필요한 최소 권한 역할을 기본으로 설정하세요.
- 일시적으로 필요한 역할은 로그인 후 SET ROLE로 수동 활성화하는 방식으로 보안 수준을 높이세요.
- SHOW GRANTS FOR CURRENT_USER() 명령어로 현재 활성화된 역할을 쉽게 확인할 수 있습니다.
공식 문서 링크
'SQL > MYSQL' 카테고리의 다른 글
[MySQL] CREATE RESOURCE GROUP 문 가이드: 리소스 최적화를 위한 시작점 (0) | 2025.06.15 |
---|---|
[MySQL] ALTER RESOURCE GROUP 문 완벽 가이드: 리소스 제어의 핵심 기능 (1) | 2025.06.14 |
[MySQL] SET ROLE 문 완벽 이해: 동적 권한 제어의 핵심 기능 (0) | 2025.06.14 |
[MySQL] SET PASSWORD 문 완벽 가이드: 안전한 비밀번호 관리를 위한 필수 지식 (3) | 2025.06.13 |
[MySQL] REVOKE 사용 방법 및 예시 (0) | 2025.03.31 |
[MySQL] Index Condition Pushdown 사용 방법 및 예시 (0) | 2025.03.19 |
[MySQL] RENAME USER 사용 방법 및 예시 (0) | 2025.03.19 |
[MySQL] 엔진 조건 푸시다운(Engine Condition Pushdown) 사용 방법 및 예시 (0) | 2025.02.17 |