pg_catalog

PostgreSQL ユーザ一覧

ユーザ一覧

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

ユーザ一覧出力SQL

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

select u.usesysid,u.usename
,case when u.usesuper='true' then '〇' else '-' end "Super"
,case when u.usecreatedb ='true' then '〇' else '-' end "createDb"
,case when u.userepl ='true' then '〇' else '-' end "repl"
,case when u.usebypassrls ='true' then '〇' else '-' end "passrls"
,search_path
from pg_user u
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 u.usename = s.usename
order by usesysid
;
ユーザ一覧出力例
 usesysid |   usename   | Super | createDb | repl | passrls |              search_path
----------+-------------+-------+----------+------+---------+----------------------------------------
       10 | postgres    | 〇    | 〇       | 〇   | 〇      |
    16384 | sooni       | 〇    | -       | -   | -      | search_path="$user", public, prjschema
    16397 | udonman     | -    | -       | -   | -      | search_path="$user", public, prjschema
    16440 | online_user | -    | -       | -   | -      |
    16441 | batch_user  | -    | -       | -   | -      |
    16442 | prjadmin    | -    | -       | -   | -      |
    16827 | kawa        | -    | -       | -   | -      |
    16828 | yama        | -    | -       | -   | -      |
(8 rows)


myposdb=#
メタコマンドによるユーザ一覧出力
\du
myposdb=# \du
                                     List of roles
  Role name  |                         Attributes                         | Member of
-------------+------------------------------------------------------------+------------
 batch_user  |                                                            | {}
 online_user |                                                            | {prjadmin}
 postgres    | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 prjadmin    |                                                            | {}
 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
 16442 | prjadmin    | ×    | 〇      | ×         | ×       | 〇       | ×          |        -1
 16783 | yama        | ×    | 〇      | ×         | ×       | 〇       | ×          |        -1
 16784 | kawa        | ×    | 〇      | ×         | ×       | 〇       | ×          |        -1
(8 rows)


myposdb=#

ユーザの作成はこちら

スポンサーリンク
コピペで使う
タイトルとURLをコピーしました