GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username }
設定可能な権限は以下のものです。
特定のテーブル/ビュー内のすべてのカラムにアクセス可能にします。
特定のテーブル内のすべてのカラムにデータを挿入します。
特定のテーブル内のすべてのカラムを更新します。
特定のテーブルの行を削除します。
テーブル/ビューにルール (CREATE RULE 文を参照) を定義します。
全ての権限を与えます。
アクセス権限を与えるオブジェクトの名前です。 使用可能な オブジェクトは以下の物です。
テーブル (table)
ビュー (view)
シーケンス (sequence)
全てのユーザを意味する短縮形です。
権限を与えるグループ名です。
権限を与えるユーザ名です。PUBLIC はすべてのユーザを表現する 短縮形です。
GRANT はオブジェクトの作成者にすべての ユーザ (PUBLIC) 、あるいはいくつかのユーザまたはグループに対し、特定の 権限を与えることを許します。 作成者以外のユーザは、作成者がオブジェクト を作成後、権限を GRANT で与えない限り、どんなアクセス権限も持っていませ ん。
ひとたびユーザがオブジェクトに限権を所有すると、ユーザは、その権限 を行使することができるようになります。オブジェクトの作成者には権限 を与える必要はありません。作成者は 自動的にすべての権限を持っており、 さらにそのオブジェクトを削除することもできます。
現在は、Postgres のいくつかのカラムだけに 権限を与えるためには、対象となるカラムを持つビューを作成してから、 そのビューに対し権限を与えなくては なりません。
既存のオブジェクトに対する権限についての詳しい情報を知る には psql \z を使います:
Database = lusitania +------------------+---------------------------------------------+ | Relation | Grant/Revoke Permissions | +------------------+---------------------------------------------+ | mytable | {"=rw","miriam=arwR","group todos=rw"} | +------------------+---------------------------------------------+ Legend: uname=arwR -- privileges granted to a user group gname=arwR -- privileges granted to a GROUP =arwR -- privileges granted to PUBLIC r -- SELECT w -- UPDATE/DELETE a -- INSERT R -- RULE arwR -- ALL
アクセス権限を取り上げるには、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 という追加の、関数では無いキーワードを許します。
指定の文字セットを使うことを許します。
指定の照合順を使うことを許します。
指定した文字セット翻訳の使用を許します。
指定したドメインを使うことを許します。
権限を与えられたユーザが、さらに他のユーザにも同じ権限を 与えることを許します。