作成済みのロール一覧を表示する
PostgreSQL では作成済みのロールの一覧を取得する方法としてメタコマンドとシステムカタログを使用する方法が用意されています。ここでは PostgreSQL で作成済みのロール一覧を取得する方法について解説します。
(Last modified: )
\duコマンドを使用する
最初に psql のメタコマンドを使ってロールの一覧を取得する方法です。次のように実行してください。
\du
作成済みのロール一覧を取得することができました。ロール毎に、ロール名、属性、所属グループの情報が表示されます。
システムカタログ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 の値を取得してみます。次のように実行してください。
select rolname, rolsuper, rolcanlogin from pg_roles;
ロールの一覧が表示されました。今回は PostgreSQL のインストール時に作成されている postgres ロールとあとから作成した saru および momo ロールの他に pg_ が付くロールが数多く表示されました。これらはデフォルトロールと呼ばれるもので、自分で作成したロールに一時的に権限を付与する場合などに利用されるものです。
デフォルトロール以外のロールの一覧を表示したい場合には例えば次のように実行してください。
select rolname, rolsuper, rolcanlogin from pg_roles where rolname not like 'pg_%';
-- --
PostgreSQL で作成済みのロールの一覧を取得する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。