GRANT

Name

GRANT  --  ユーザ、グループあるいはすべてのユーザにアクセス権限を与える。

Synopsis

GRANT privilege [, ...] ON object [, ...]
    TO { PUBLIC | GROUP group | username }
  

入力

privilege

以下の権限を設定することができます。

SELECT

特定のテーブル/ビュー内の全ての列にアクセスする権限。

INSERT

特定のテーブル内の全ての列にデータを挿入する権限。

UPDATE

特定のテーブル内の全ての列を更新する権限。

DELETE

特定のテーブルの行を削除する権限。

RULE

テーブル/ビューにルール (CREATE RULE 文を参照) を定義 する権限。

ALL

全ての権限を与えます。

object

アクセス権限を与えるオブジェクト名。 以下のオブジェクトに対して使用できます。

  • テーブル

  • ビュー

  • シーケンス

PUBLIC

全てのユーザを意味する短縮形です。

GROUP group

権限を与える グループ名

username

権限を与えるユーザ名。 PUBLIC は全てのユーザを表現する短縮形です。

出力

CHANGE

成功時に返されるメッセージ。

ERROR: ChangeAcl: class "object" not found

指定したオブジェクトが利用できない、あるいは指定した グループまたはユーザに対して権限を与えることができない場合に 返されるメッセージ。

説明

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

SQL92 の GRANT の文法では テーブル中の 個々のカラムに対して権限を設定すること、及び、権限を与えられ たユーザが同じ権限を他のユーザに与えることができます。

GRANT privilege [, ...]
    ON object [ ( column [, ...] ) ] [, ...]
    TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ]
    

Postgres の実装と互換性のある設定項目以 外に、次の項目が追加されています。

privilege

SQL92 では、以下のような追加の権限の 指定も認めています:

SELECT

REFERENCES

整合性制約の中で、指定した テーブル/ビューの一部 あるいは全てのカラムを参照することを許します。

USAGE

ドメイン、文字セット、照合あるいは翻訳を使うことができます。 もし対象がテーブルまたはビュー以外のものを指定する場合 privilege には USAGE だけを指定しなくてはなりません。

object

[ TABLE ] table

SQL92 では、更に TABLE という関数ではないキーワードを使用できます。

CHARACTER SET

指定の文字セットを使うことができます。

COLLATION

指定の照合順を使うことができます。

TRANSLATION

指定した文字セット翻訳を使うことができます。

DOMAIN

指定したドメインを使うことができます。

WITH GRANT OPTION

権限を与えられたユーザが、他のユーザに同じ権限を 与えることができます。