MySQL에서 CREATE ROLE 명령은 데이터베이스 관리자가 역할(Role)을 생성하여 사용자 권한을 보다 효율적으로 관리할 수 있도록 도와줍니다. 이 기능은 MySQL 8.0부터 지원되며, 다수의 사용자에게 동일한 권한을 적용해야 할 때 유용하게 사용됩니다. 이 글에서는 CREATE ROLE의 개념, 사용법, 그리고 활용 예제를 통해 이해하기 쉽게 설명하겠습니다.
역할(Role)이란?
역할(Role)은 하나 이상의 사용자에게 할당될 수 있는 권한 집합입니다. 역할을 사용하면 개별 사용자에게 권한을 직접 할당하지 않아도 되고, 역할을 변경함으로써 관련된 모든 사용자의 권한을 간단히 업데이트할 수 있습니다.
CREATE ROLE 사용의 주요 이점
- 권한 관리 간소화: 여러 사용자에게 동일한 권한을 적용할 때 효율적.
- 역할 기반 접근 제어: 사용자 그룹별 권한 설정 가능.
- 보안 향상: 권한 부여와 철회가 체계적.
CREATE ROLE 기본 문법
CREATE ROLE role_name;
여러 개의 역할을 한 번에 생성하려면 쉼표로 구분하여 지정합니다.
CREATE ROLE role_name1, role_name2, ...;
CREATE ROLE 사용 예제
1. 기본적인 역할 생성
CREATE ROLE read_only;
CREATE ROLE data_analyst, admin_role;
위 예제는 read_only, data_analyst, admin_role이라는 세 가지 역할을 생성합니다.
2. 역할에 권한 부여하기
GRANT SELECT ON database_name.* TO read_only;
GRANT SELECT, INSERT, UPDATE ON sales_data.* TO data_analyst;
GRANT ALL PRIVILEGES ON *.* TO admin_role WITH GRANT OPTION;
이 명령은 각 역할에 적절한 권한을 부여합니다.
- read_only: 데이터베이스의 읽기 전용 권한.
- data_analyst: 데이터 삽입, 수정, 읽기 권한.
- admin_role: 모든 권한 및 다른 사용자에게 권한 부여 가능.
3. 사용자에게 역할 할당하기
GRANT read_only TO 'john'@'localhost';
GRANT data_analyst TO 'jane'@'localhost', 'emma'@'192.168.1.100';
- 사용자 john은 read_only 역할을 부여받습니다.
- 사용자 jane과 emma는 data_analyst 역할을 부여받습니다.
4. 활성 역할 설정
SET DEFAULT ROLE read_only FOR 'john'@'localhost';
SET ROLE read_only;
- 특정 사용자가 기본적으로 사용할 역할을 설정합니다.
- SET ROLE 명령을 사용해 현재 세션에서 활성화할 역할을 선택합니다.
CREATE ROLE의 활용 사례
1. 다중 역할 생성 및 관리
예를 들어, 회사의 데이터베이스 관리에서 여러 부서(예: HR, 마케팅, IT)의 사용자 그룹을 정의하고, 부서별로 필요한 권한을 설정할 수 있습니다.
CREATE ROLE hr_manager, marketing_team, it_support;
GRANT SELECT, INSERT ON hr_data.* TO hr_manager;
GRANT SELECT ON marketing_data.* TO marketing_team;
GRANT SELECT, UPDATE ON it_support_logs.* TO it_support;
2. 프로젝트 기반 권한 설정
프로젝트별로 역할을 정의하여 사용자 접근 권한을 관리합니다.
CREATE ROLE project_alpha, project_beta;
GRANT ALL PRIVILEGES ON alpha_db.* TO project_alpha;
GRANT ALL PRIVILEGES ON beta_db.* TO project_beta;
3. 권한 철회 시의 효율성
역할을 통해 권한을 부여하면, 역할 자체를 철회하거나 수정함으로써 여러 사용자에 대한 권한을 간단히 관리할 수 있습니다.
REVOKE ALL PRIVILEGES ON alpha_db.* FROM project_alpha;
CREATE ROLE과 관련된 주요 명령어
1. 역할 삭제하기
역할이 더 이상 필요하지 않을 경우 삭제할 수 있습니다.
DROP ROLE read_only;
2. 역할 정보 조회
현재 데이터베이스에 정의된 역할을 확인합니다.
SELECT * FROM mysql.roles_mapping;
주의사항
- 역할은 MySQL 8.0 이상에서만 지원됩니다.
- 역할에 권한을 부여하거나 철회할 때, 역할을 사용하는 사용자들에게 자동으로 적용됩니다.
- 역할은 다른 역할을 포함할 수 없습니다(중첩 불가).
결론
MySQL의 CREATE ROLE 기능은 데이터베이스 사용자 및 권한 관리를 단순화하는 강력한 도구입니다.
참고 자료
공식 가이드 문서: https://dev.mysql.com/doc/refman/8.0/en/create-role.html
'DB' 카테고리의 다른 글
[MySQL] CREATE LOGFILE GROUP 완벽 가이드 사용법(로그파일 그룹 생성) (0) | 2025.01.20 |
---|---|
[MySQL] GRANT ROLE 완벽 가이드 사용법(역할[Role] 부여) (0) | 2025.01.20 |
[MySQL] DROP ROLE 완벽 가이드 사용법(역할[Role] 삭제) (0) | 2025.01.18 |
[MySQL] RESET MASTER / SLAVE 완벽 가이드 사용법(서버 초기화) (0) | 2025.01.15 |
[MySQL] ALTER TABLE ... PARTITION 완벽 가이드 사용법(테이블 파티션 관리) (0) | 2025.01.15 |
[MySQL] CREATE TABLE AS 완벽 가이드 사용법(데이터를 조회하여 테이블 생성) (1) | 2025.01.15 |
[MySQL] CREATE SPATIAL INDEX 완벽 가이드 사용법(공간인덱스) (0) | 2025.01.15 |
[MySQL] SET CHARACTER SET 완벽 가이드 사용법(캐릭터셋 설정) (0) | 2025.01.15 |