PostgreSQL | ロール(ユーザー) ROLE 作成 | 作成済みロールの確認

PostgreSQL で作成されたロール一覧を確認する方法について説明する。

\du コマンドを使用する

まず psql のメタコマンドを使用してロール一覧を確認する方法を説明する。次のように実行する。

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


devkuma=#

作成されたロール一覧が表示された。ロールごとに「ロール名、属性、所属グループ」の情報が表示される。

システムカタログ pg_roles から確認する

続いて、PostgreSQL のシステムカタログの 1 つである 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 から rolnamerolsuperrolcanlogin の値を取得してみる。次のように実行する。

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 で作成されたロール一覧を確認する方法について説明した。