GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username }
以下の権限を設定することができます。
特定のテーブル/ビュー内の全ての列にアクセスする権限。
特定のテーブル内の全ての列にデータを挿入する権限。
特定のテーブル内の全ての列を更新する権限。
特定のテーブルの行を削除する権限。
テーブル/ビューにルール (CREATE RULE 文を参照) を定義 する権限。
全ての権限を与えます。
アクセス権限を与えるオブジェクト名。 以下のオブジェクトに対して使用できます。
テーブル
ビュー
シーケンス
全てのユーザを意味する短縮形です。
権限を与える グループ名 。
権限を与えるユーザ名。 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
アクセス権限を取り上げるには、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 という関数ではないキーワードを使用できます。
指定の文字セットを使うことができます。
指定の照合順を使うことができます。
指定した文字セット翻訳を使うことができます。
指定したドメインを使うことができます。
権限を与えられたユーザが、他のユーザに同じ権限を 与えることができます。