DROP ROLE — 역할(role) 삭제하기
DROP ROLE — 역할(role) 삭제하기
DROP ROLE은 데이터베이스 역할(role)을 제거하는 명령이에요. 역할이 삭제되면 해당 역할이 다른 역할에서 가진 멤버십도 자동으로 해지되지만, 그 역할이 소유한 객체들은 미리 정리해 둬야 해요. 어떤 역할을 지우려면 그에 맞는 권한(CREATEROLE, ADMIN OPTION 등)이 필요합니다.
출처: PostgreSQL 문서
본문
Synopsis
DROP ROLE [ IF EXISTS ] name [, ...]
Description
DROP ROLE은 지정된 역할(들)을 제거해요. 슈퍼유저 역할을 삭제하려면 자신이 슈퍼유저여야 하고, 슈퍼유저가 아닌 역할을 삭제하려면 CREATEROLE 권한이 있으면서 그 역할에 대한 ADMIN OPTION을 부여받아야 해요.
클러스터의 어떤 데이터베이스에서도 여전히 참조되고 있는 역할은 제거할 수 없어요. 그런 경우 오류가 발생합니다. 역할을 삭제하기 전에 그 역할이 소유한 모든 객체를 삭제하거나(또는 소유권을 재할당하고) 다른 객체에 부여된 그 역할의 모든 권한을 회수해야 해요. REASSIGN OWNED와 DROP OWNED 명령이 이 용도로 유용합니다. 자세한 내용은 21.4절을 참고하세요.
다만 역할과 관련된 역할 멤버십을 제거할 필요는 없어요. DROP ROLE이 대상 역할이 다른 역할에서 가진 멤버십과, 다른 역할이 대상 역할에서 가진 멤버십을 자동으로 회수해 주거든요. 다른 역할들은 삭제되지도, 다른 영향을 받지도 않습니다.
Parameters
- IF EXISTS — 역할이 존재하지 않아도 오류를 던지지 않아요. 이 경우에는 통지(notice)만 발행됩니다.
- name — 제거할 역할의 이름.
Notes
PostgreSQL에는 이 명령과 같은 기능을 하는 dropuser 프로그램이 포함되어 있어요 (사실 이 명령을 호출하죠). 이 프로그램은 명령 셸에서 실행할 수 있습니다.
Examples
역할을 삭제하기:
DROP ROLE jonathan;
Compatibility
SQL 표준은 DROP ROLE을 정의하지만, 명령 하나로 역할을 하나만 삭제할 수 있고, PostgreSQL이 사용하는 것과는 다른 권한 요구 사항을 지정해요.