CREATE ROLE
CREATE ROLE
새로운 역할(role)을 만들어요. 역할은 권한(privileges)의 집합입니다. 역할이 할당된 사용자는 이 역할의 모든 권한을 얻습니다.
출처: 문서
본문
Syntax:
CREATE ROLE [IF NOT EXISTS | OR REPLACE] name1 [, name2 [,...]] [ON CLUSTER cluster_name]
[IN access_storage_type]
[SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [CONST|READONLY|WRITABLE|CHANGEABLE_IN_READONLY] | PROFILE 'profile_name'] [,...]
CREATE ROLE은 CREATE ROLE 권한이 필요해요. OR REPLACE는 같은 이름의 기존 역할과 그에 부여된 권한을 버리므로, 추가로 DROP ROLE 권한이 필요합니다. DROP ROLE 권한은 문에 나열된 모든 이름에 대해 그 역할이 이미 존재하는지와 상관없이 필요하므로, 이 문으로 어떤 역할이 존재하는지 알아낼 수 없어요.
Managing Roles
사용자에게 여러 역할을 할당할 수 있어요. 사용자는 SET ROLE 문으로 할당된 역할을 임의의 조합으로 적용할 수 있습니다. 최종 권한 범위는 적용된 모든 역할의 모든 권한의 결합 집합이에요. 사용자 계정에 직접 부여된 권한이 있으면, 그것도 역할로 부여된 권한과 결합됩니다.
사용자는 로그인 시 적용되는 기본 역할을 가질 수 있어요. 기본 역할을 설정하려면 SET DEFAULT ROLE 문 또는 ALTER USER 문을 사용하세요.
역할을 취소하려면 REVOKE 문을 사용하세요.
역할을 삭제하려면 DROP ROLE 문을 사용하세요. 삭제된 역할은 할당되었던 모든 사용자와 역할로부터 자동으로 취소됩니다.
Examples
CREATE ROLE accountant;
GRANT SELECT ON db.* TO accountant;
이 쿼리 시퀀스는 db 데이터베이스에서 데이터를 읽을 권한을 가진 역할 accountant를 만들어요.
역할을 사용자 mira에게 할당:
GRANT accountant TO mira;
역할이 할당된 후 사용자는 그것을 적용하고 허용된 쿼리를 실행할 수 있어요. 예를 들어:
SET ROLE accountant;
SELECT * FROM db.*;