🐘

psqlでのロール情報確認メタコマンドの変更(PostgreSQL 17)

2023/11/13に公開

はじめに

PostgreSQL 16では、ロールに関する様々な変更が入りました。

そのため、psqlでロールの情報を表示するためのメタコマンドにも変更が加わっています。

\drg[S]メタコマンドの追加

PostgreSQL 16ではロールを付与する際にINHERIT OPTIONやSET OPTIONを指定できるようになったので、それらの情報を見やすくするために追加されました。

カラム 説明
Role name ロール名
Member of 継承元のメンバ(Role nameはMember ofの権限を継承する)
Options ADMIN、INHERIT、SET
Grantor 付与者(Role nameにMember ofを付与したロール)

出力は以下のようになります。

=> \drg
                        List of role grants
   Role name   |     Member of     |       Options       | Grantor  
---------------+-------------------+---------------------+----------
 postgres      | rds_superuser     | INHERIT, SET        | rdsadmin
 rds_superuser | pg_monitor        | ADMIN, INHERIT, SET | rdsadmin
 rds_superuser | pg_signal_backend | ADMIN, INHERIT, SET | rdsadmin
 rds_superuser | rds_password      | ADMIN, INHERIT, SET | rdsadmin
 rds_superuser | rds_replication   | ADMIN, INHERIT, SET | rdsadmin
 rdstopmgr     | pg_monitor        | INHERIT, SET        | rdsadmin
(6 rows)

=> \drg postgres
                 List of role grants
 Role name |   Member of   |   Options    | Grantor  
-----------+---------------+--------------+----------
 postgres  | rds_superuser | INHERIT, SET | rdsadmin
(1 row)

Sを付けることで、システムロールについても表示することができます。

=> \drgS
                          List of role grants
   Role name   |      Member of       |       Options       | Grantor  
---------------+----------------------+---------------------+----------
 pg_monitor    | pg_read_all_settings | INHERIT, SET        | rdsadmin
 pg_monitor    | pg_read_all_stats    | INHERIT, SET        | rdsadmin
 pg_monitor    | pg_stat_scan_tables  | INHERIT, SET        | rdsadmin
 postgres      | rds_superuser        | INHERIT, SET        | rdsadmin
 rds_superuser | pg_monitor           | ADMIN, INHERIT, SET | rdsadmin
 rds_superuser | pg_signal_backend    | ADMIN, INHERIT, SET | rdsadmin
 rds_superuser | rds_password         | ADMIN, INHERIT, SET | rdsadmin
 rds_superuser | rds_replication      | ADMIN, INHERIT, SET | rdsadmin
 rdstopmgr     | pg_monitor           | INHERIT, SET        | rdsadmin
(9 rows)

\du[S+]\dg[S+]からMember ofカラムが削除

\drg[S]メタコマンドでより詳細の情報を確認できるようになったので、\du[S+]\dg[S+]からMember ofカラムが削除されました。

=> \du
                                List of roles
    Role name    |                         Attributes                         
-----------------+------------------------------------------------------------
 has_bypassrls   | Cannot login, Bypass RLS
 postgres        | Create role, Create DB                                    +
                 | Password valid until infinity
 rds_ad          | Cannot login
 rds_iam         | Cannot login
 rds_password    | Cannot login
 rds_replication | Cannot login
 rds_superuser   | Cannot login
 rdsadmin        | Superuser, Create role, Create DB, Replication, Bypass RLS+
                 | Password valid until infinity
 rdsrepladmin    | No inheritance, Cannot login, Replication
 rdstopmgr       |

参考文献

https://www.postgresql.org/docs/current/release-16.html
https://www.postgresql.org/docs/16/app-psql.html
https://zenn.dev/shinyakato/articles/1a1012c23a2b75

Discussion