ロールは次のような属性を持ちます。属性とは以下表をみてもらうとわかるように「ある特別な管理操作の可不可」を決めるものです。よく混乱しがちですが、各種オブジェクトへのアクセスを制御する「権限」とは少し異なる概念です。属性の変更はalter roleで行い、権限の付与やはく奪はgrant およびrevokeにて行います。
属性 | 解説 |
ログイン権限 | ログイン権限を保持するロールがユーザとなります。 |
スーパーユーザ権限 | この権限を保持するといかなる権限検査の対象外になります(何でもできるようになる) |
データベース作成権限 | この権限を保持してはじめてデータベースの作成ができます。 |
ロール作成権限 | ロールの作成、変更、削除、メンバ資格の追加削除が可能 |
レプリケーション用接続権限 | レプリケーションを行うユーザ(ログイン権限保持前提)はこの権限も必要です。 |
ロール一覧(属性確認)出力SQL
SELECT rolname ,case when rolcanlogin = true then '〇'else '×' end rolcanlogin ,case when rolsuper = true then '〇'else '×' end rolsuper ,case when rolcreatedb = true then '〇'else '×' end rolcreatedb ,case when rolcreaterole = true then '〇'else '×' end rolcreaterole ,case when rolreplication = true then '〇'else '×' end rolreplication ,case when rolinherit = true then '〇'else '×' end rolinherit FROM pg_roles order by oid ;
ロール一覧(属性確認)出力例
rolname | rolcanlogin | rolsuper | rolcreatedb | rolcreaterole | rolreplication | rolinherit
---------------------------+-------------+----------+-------------+---------------+----------------+------------
postgres | 〇 | 〇 | 〇 | 〇 | 〇 | 〇
pg_monitor | × | × | × | × | × | 〇
pg_read_all_settings | × | × | × | × | × | 〇
pg_read_all_stats | × | × | × | × | × | 〇
pg_stat_scan_tables | × | × | × | × | × | 〇
pg_signal_backend | × | × | × | × | × | 〇
pg_read_server_files | × | × | × | × | × | 〇
pg_write_server_files | × | × | × | × | × | 〇
pg_execute_server_program | × | × | × | × | × | 〇
sooni | 〇 | 〇 | × | × | × | 〇
udonman | 〇 | × | × | × | × | 〇
online_user | 〇 | × | × | × | × | 〇
batch_user | 〇 | × | × | × | × | 〇
prjadmin | 〇 | × | × | × | × | 〇
(14 rows)
myposdb=#