PostgreSQL | 역할(사용자) ROLE 생성 | 생성된 역할 조회


PostgreSQL로 생성된 역할 목록을 검색하는 방법에 대해 설명한다.

\du 명령 사용

먼저 psql의 메타 명령을 사용하여 역할 목록을 조회하는 방법을 설명하겠다. 다음과 같이 실행한다.

devkuma=# \du
                                 롤 목록
  롤 이름  |                      속성                      | 소속 그룹:
-----------+------------------------------------------------+------------
 kimkc     | 슈퍼유저                                       | {}
 kuma      |                                                | {}
 orange    |                                                | {}
 postgres  | 슈퍼유저, 롤 만들기, DB 만들기, 복제, RLS 통과 | {}
 superkuma | 롤 만들기, DB 만들기                           | {}


devkuma=#

생성된 역할 목록이 조회 되었다. 역할마다 “롤 이름, 속성, 소속 그룹"의 정보가 표시된다.

시스템 카탈로그 pg_roles으로 조회하기

이어 PostgreSQL 시스템 카탈로그의 하나인 pg_roles에서 역할 목록을 얻는 방법이다. pg_roles에는 다음과 같은 열이 있다.

이름 설명
rolname name 역할 이름
rolsuper bool 슈퍼 유저 권한의 유무
rolinherit bool 멤버 인 롤의 권한을 상속할지 여부
rolcreaterole bool 역할 만들기 권한의 유무
rolcreatedb bool 데이터베이스 생성 권한이 있는지
rolcanlogin bool 로그인을 할 수있는 역할 여부
rolreplication bool 복제에 대한 역할 여부
rolconnlimit int4 최대 동시 연결 수 (-1은 무제한)
rolpassword text 비밀번호 (다만, ********와 같이 표시)
rolvaliduntil timestamptz 암호 만료 (만료되지 않으면 NULL)
rolbypassrls bool 모든 행 단위 보안 정책을 무시할지 여부
rolconfig text[] 런타임 구성 변수에 대한 역할 별 기본
oid oid 롤의 ID

컬럼의 수가 많기에, 예를 들면 pg_roles에서 rolname과 rolsuper과 rolcanlogin 값을 조회해 본다. 다음과 같이 실행한다.

devkuma=# select rolname, rolsuper, rolcanlogin from pg_roles;
          rolname          | rolsuper | rolcanlogin
---------------------------+----------+-------------
 pg_monitor                | f        | f
 pg_read_all_settings      | f        | f
 pg_read_all_stats         | f        | f
 pg_stat_scan_tables       | f        | f
 pg_read_server_files      | f        | f
 pg_write_server_files     | f        | f
 pg_execute_server_program | f        | f
 pg_signal_backend         | f        | f
 postgres                  | t        | t
 kuma                      | f        | t
 superkuma                 | f        | t
(11개 행)


devkuma=#

역할 목록이 표시되었다. 이번에는 PostgreSQL 설치시 생성되는 postgres 역할과 나중에 만든 kuma 및 superkuma 역할 외에 pg_가 붙는 역할이 많이 표시되었다. 이 역할들은 기본 역할들로써 스스로 만든 역할에 일시적으로 권한을 부여하는 경우 등에 이용된다.

기본 역할 이외의 역할 목록을 표시할 경우에는 예를 들어 다음과 같이 실행한다.

devkuma=# select rolname, rolsuper, rolcanlogin
devkuma-#   from pg_roles
devkuma-#   where rolname not like 'pg_%';
  rolname  | rolsuper | rolcanlogin
-----------+----------+-------------
 postgres  | t        | t
 kuma      | f        | t
 superkuma | f        | t
(3 )


devkuma=#

여기까지 PostgreSQL로 생성된 역할 목록을 검색하는 방법에 대해 알아보았다.