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 | シーケンス | |

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について