GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username }
設定可能な権限は以下のものです:
特定のテーブル/ビュー内のすべてのカラムにアクセス可能 にします。
特定のテーブル内のすべてのカラムにデータを挿入可能に します。
特定のテーブル内のすべてのカラムを更新可能にします。
特定のテーブルの行を削除可能にします。
テーブル/ビューにルール (CREATE RULE 文を参照) を定義 します。
すべての権限を与えます。
アクセス権限を与えるオブジェクトの名前。 使用可能なオブジェクトは以下の物です:
テーブル (table)
ビュー (view)
シーケンス (sequence)
インデックス (index)
全てのユーザを意味する短縮形です。
権限を与える グループ名 。 現在のバージョンでは、グループは後述されるように 明示的に作成されなければなりません。
権限を与えるユーザ名。PUBLIC はすべてのユーザを表現する 短縮形です。
GRANT はオブジェクトの作成者にすべての ユーザ (PUBLIC) 、あるいはいくつかのユーザまたはグループに 対し、特定の権限を与えることを許します。 作成者以外のユーザは、作成者がオブジェクトを作成後、権限を GRANTで与えない限り、どんなアクセス権限も持っていません。
ひとたびユーザがオブジェクトに限権を所有すると、ユーザは、 その権限を行使することができるようになります。 オブジェクトの作成者には権限を与える必要はありません。作成者は 自動的にすべての権限を持っており、さらにそのオブジェクトを削除 することもできます。
現在は、Postgres のいくつかの カラムだけに権限を与えるためには、対象となるカラムを持つ ビューを作成してから、そのビューに対し権限を与えなくては なりません。
既存のオブジェクトに対する権限についての詳しい情報を知るには psql \z を使います:
Database = lusitania +------------------+---------------------------------------------+ | Relation | Grant/Revoke Permissions | +------------------+---------------------------------------------+ | mytable | {"=rw","miriam=arwR","group todos=rw"} | +------------------+---------------------------------------------+ 凡例: ユーザ名=arwR -- ユーザに与えられた権限 group グループ名=arwR -- グループに与えられた権限 =arwR -- 全てのユーザ (PUBLIC) に与えられた権限 r -- SELECT w -- UPDATE/DELETE a -- INSERT R -- RULE arwR -- ALL
Tip: 現在、GROUP (グループ) を作成するには、pg_group テーブルに 手作業でデータを追加しなければなりません:
INSERT INTO pg_group VALUES ('todos'); CREATE USER miriam IN GROUP todos;
アクセス権限を取り上げるには、REVOKE 文を参照してください。
テーブル films にデータを追加する権限を全てのユーザに与える:
GRANT INSERT ON films TO PUBLIC;
ビュー kinds の全ての権限を、ユーザ manuel に与える:
GRANT ALL ON kinds TO manuel;
SQL92 の文法では、GRANT は テーブル中の 個々のカラムに対して権限を設定すること、そして権限を与えられ たユーザが同じ権限を他のユーザに与えることを許しています。
GRANT privilege [, ...] ON object [ ( column [, ...] ) ] [, ...] TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ]
設定項目は Postgres に実装されている物と 互換性があり、さらに以下のような物も付加されています:
SQL92 は、以下のような追加の権限の 指定も認めています:
一貫性制約の中で、指定した テーブル/ビューのいくつか あるいは全てのカラムを参照することを許します。
ドメイン、文字セット、照合あるいは翻訳を使うことを 許します。 もし対象がテーブルまたはビュー以外のものを指定する場合 privilege には USAGE だけを指定しなくてはなりません。
SQL92 では、TABLE という追加の、関数では無いキーワードを許します。
指定の文字セットを使うことを許します。
指定の照合順を使うことを許します。
指定した文字セット翻訳の使用を許します。
指定したドメインを使うことを許します。
権限を与えられたユーザが、さらに他のユーザにも 同じ権限を与えることを許します。