DB

[MySQL] CREATE ROLE 완벽 가이드 사용법(역할[Role] 생성)

인생아 2025. 1. 15. 17:58
반응형

MySQL에서 CREATE ROLE 명령은 데이터베이스 관리자가 역할(Role)을 생성하여 사용자 권한을 보다 효율적으로 관리할 수 있도록 도와줍니다. 이 기능은 MySQL 8.0부터 지원되며, 다수의 사용자에게 동일한 권한을 적용해야 할 때 유용하게 사용됩니다. 이 글에서는 CREATE ROLE의 개념, 사용법, 그리고 활용 예제를 통해 이해하기 쉽게 설명하겠습니다.

역할(Role)이란?

역할(Role)은 하나 이상의 사용자에게 할당될 수 있는 권한 집합입니다. 역할을 사용하면 개별 사용자에게 권한을 직접 할당하지 않아도 되고, 역할을 변경함으로써 관련된 모든 사용자의 권한을 간단히 업데이트할 수 있습니다.

CREATE ROLE 사용의 주요 이점

  1. 권한 관리 간소화: 여러 사용자에게 동일한 권한을 적용할 때 효율적.
  2. 역할 기반 접근 제어: 사용자 그룹별 권한 설정 가능.
  3. 보안 향상: 권한 부여와 철회가 체계적.
반응형

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';
  • 사용자 johnread_only 역할을 부여받습니다.
  • 사용자 janeemmadata_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

 

 

반응형