ユーザ一覧
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=#