PostgreSQLの権限設定
ロール管理、権限設定 GRANT/REVOKE
ロール管理
SQL
--DB作成可能なロール bar を作成
CREATE ROLE bar WITH CREATEDB;
--スーパーユーザ、DB作成、ロール作成可能なロール bar を作成
CREATE ROLE bar WITH SUPERUSER CREATEDB CREATEROLE;
--パスワード付きのロール bar を作成
CREATE ROLE bar WITH PASSWORD '2b96f17g';
--ロール bar のパスワードを変更
ALTER ROLE bar WITH PASSWORD '4d687g5e';
--ロール bar にDB作成権限を付与
ALTER ROLE bar CREATEDB;
--ロール bar にスーパーユーザ、DB作成、ロール作成を付与
ALTER ROLE bar SUPERUSER CREATEDB CREATEROLE;
--ロール bar を削除
DROP ROLE bar;
初期状態
pgdb=# \du
ロール一覧
ロール名 | 属性 | メンバー
----------+----------------------------------------------------------------------+----------
postgres | スーパーユーザ, ロールを作成できる, DBを作成できる, レプリケーション | {}
ロール追加(WITH CREATEDB)
pgdb=# \du
ロール一覧
ロール名 | 属性 | メンバー
---------+----------------------------------------------------------------------+----------
bar | DBを作成できる, ログインできない | {}
postgres | スーパーユーザ, ロールを作成できる, DBを作成できる, レプリケーション | {}
アクセス権限
SQL
--テーブル foo の権限(SELECT)を ロール bar に追加
GRANT SELECT ON foo TO bar;
--テーブル foo の権限(SELECT, UPDATE, INSERT, DELETE)を ロール bar に追加
GRANT SELECT, UPDATE, INSERT, DELETE ON foo TO bar;
--テーブル foo の全ての権限を ロール bar に追加
GRANT ALL PRIVILEGES ON foo TO bar;
--テーブル foo の削除権限を ロール bar から削除
REVOKE DELETE ON foo FROM bar;
--テーブル foo の全ての権限を ロール bar から削除
REVOKE ALL PRIVILEGES ON foo FROM bar;
初期状態
pgdb=# \z
アクセス権
スキーマ | 名前 | 型 | アクセス権 | 列のアクセス権限
----------+---------+------------+------------+------------------
public | foo | テーブル | |
public | foo_seq | シーケンス | |
アクセス権限追加(GRANT SELECT)
pgdb=# \z
アクセス権
スキーマ | 名前 | 型 | アクセス権 | 列のアクセス権限
----------+---------+------------+---------------------------+------------------
public | foo | テーブル | postgres=arwdDxt/postgres+|
| | | bar=r/postgres |
public | foo_seq | シーケンス | |