pg_catalog

PostgreSQL ユーザ一覧

ユーザ一覧

pg_userビューを参照する事でユーザ一覧を確認できます。postgreSQLでは「ログイン属性」を保持しているロールをユーザと考えればよいので、pg_rolesをrolcanlogin = trueの条件で参照してもユーザ一覧として取得できます。

ユーザ一覧出力SQL

ユーザ毎にサーチパスを設定する事ができるので以下SQLではサーチパスも出しています。

select oid , r.rolname
,case when r.rolsuper = 'true' then '〇' else '-' end "Super"
,case when r.rolcreatedb ='true' then '〇' else '-' end "createDb"
,case when r.rolcreaterole ='true' then '〇' else '-' end "createRole"
,case when r.rolcanlogin ='true' then '〇' else '-' end "canlogin"
,case when s.search_path is null then current_setting('search_path') else s.search_path end "search_path"
from pg_roles r
left outer join (
  select usename,search_path
  from ( select usename,unnest(useconfig) search_path from pg_user ) t
  where search_path like '%search%'
) s
on r.rolname = s.usename
where r.rolcanlogin ='true'
order by r.oid
;
ユーザ一覧出力例
  oid  |   rolname   | Super | createDb | createRole | canlogin |              search_path
-------+-------------+-------+----------+------------+----------+----------------------------------------
    10 | postgres    | 〇    | 〇       | 〇         | 〇       | "$user", public, prjschema
 16384 | sooni       | 〇    | -       | -         | 〇       | search_path="$user", public, prjschema
 16397 | udonman     | -    | -       | -         | 〇       | search_path="$user", public, prjschema
 16440 | online_user | -    | -       | -         | 〇       | "$user", public, prjschema
 16441 | batch_user  | -    | -       | -         | 〇       | "$user", public, prjschema
 18262 | prjadmin    | -    | -       | -         | 〇       | "$user", public, prjschema
(6 行)


myposdb=#
メタコマンドによるユーザ一覧出力
\du
myposdb=# \du
                                               List of roles
  Role name  |                                   Attributes                |  Member of
-------------+-------------------------------------------------------------+--------------
 batch_user  |                                                             | {}
 prjadmin    |                                                             | {}
 online_user |                                                             | {}
 postgres    | Superuser, Create role, Create DB, Replication,  Bypass RLS | {}
 sooni       | Superuser                                                   | {}
 udonman     |                                                             | {}


myposdb=#
ユーザ一覧出力SQL(pg_rolesビューから求める)

PostgreSQLのユーザは、「ログイン属性を保持したロール」と言われるのは以下のSQLにて納得できます

select oid,rolname
,case  rolsuper when 'true' then '〇' else '×' end as "super"
,case  rolinherit when 'true' then '〇' else '×' end as "inherit"
,case  rolcreaterole when 'true' then '〇' else '×' end as "createrole"
,case  rolcreatedb when 'true' then '〇' else '×' end as "createdb"
,case  rolcanlogin when 'true' then '〇' else '×' end as "canlogin"
,case  rolreplication when 'true' then '〇' else '×' end as "replication"
,rolconnlimit as "connlimit"
from pg_roles where rolcanlogin = true order by oid
;
ユーザ一覧出力例(ログイン属性を保持しているロール一覧)
  oid  |   rolname   | super | inherit | createrole | createdb | canlogin | replication | connlimit
-------+-------------+-------+---------+------------+----------+----------+-------------+-----------
    10 | postgres    | 〇    | 〇      | 〇         | 〇       | 〇       | 〇          |        -1
 16384 | sooni       | 〇    | 〇      | ×         | ×       | 〇       | ×          |         2
 16397 | udonman     | ×    | 〇      | ×         | ×       | 〇       | ×          |        -1
 16440 | online_user | ×    | 〇      | ×         | ×       | 〇       | ×          |        -1
 16441 | batch_user  | ×    | 〇      | ×         | ×       | 〇       | ×          |        -1
 18262 | prjadmin    | ×    | 〇      | ×         | ×       | 〇       | ×          |        -1
(6 行)


myposdb=#

ユーザの作成はこちら

ユーザへの権限付与

サーチパスを変更する

スポンサーリンク
コピペで使う