作成済みのロール一覧を表示する

PostgreSQL では作成済みのロールの一覧を取得する方法としてメタコマンドとシステムカタログを使用する方法が用意されています。ここでは PostgreSQL で作成済みのロール一覧を取得する方法について解説します。

(Last modified: )

\duコマンドを使用する

最初に psql のメタコマンドを使ってロールの一覧を取得する方法です。次のように実行してください。

\du

\duコマンドを使用する(1)

作成済みのロール一覧を取得することができました。ロール毎に、ロール名、属性、所属グループの情報が表示されます。

システムカタログpg_rolesから取得する

続いて PostgreSQL のシステムカタログの一つである pg_roles からロールの一覧を取得する方法です。 pg_roles には次のようなカラムがあります。

名前説明
rolnamenameロール名
rolsuperboolスーパーユーザの権限の有無
rolinheritboolメンバであるロールの権限を継承するかどうか
rolcreateroleboolロールの作成権限の有無
rolcreatedbboolデータベースの作成権限の有無
rolcanloginboolログインを行えるロールかどうか
rolreplicationboolレプリケーション用のロールかどうか
rolconnlimitint4同時接続の最大数(-1は無制限)
rolpasswordtextパスワード(ただし ******** とのみ表示)
rolvaliduntiltimestamptzパスワードの有効期限(有効期限がない場合はNULL)
rolbypassrlsboolすべての行単位セキュリティポリシーを無視するかどうか
rolconfigtext[]実行時設定変数に関するロール固有のデフォルト
oidoidロールのID

カラムの数が多いので、例として pg_roles から rolname と rolsuper と rolcanlogin の値を取得してみます。次のように実行してください。

select rolname, rolsuper, rolcanlogin from pg_roles;

システムカタログpg_rolesから取得する(1)

ロールの一覧が表示されました。今回は PostgreSQL のインストール時に作成されている postgres ロールとあとから作成した saru および momo ロールの他に pg_ が付くロールが数多く表示されました。これらはデフォルトロールと呼ばれるもので、自分で作成したロールに一時的に権限を付与する場合などに利用されるものです。

デフォルトロール以外のロールの一覧を表示したい場合には例えば次のように実行してください。

select rolname, rolsuper, rolcanlogin
  from pg_roles 
  where rolname not like 'pg_%';

システムカタログpg_rolesから取得する(2)

-- --

PostgreSQL で作成済みのロールの一覧を取得する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。