★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

7.3. 権限

データベースオブジェクトが作成されるとその所有者が設定されます。所有者はその作成文を実行したユーザです。現在のところデータベースオブジェクトの所有者を変更するための洗練されたインタフェースはまだありません。デフォルトでは、所有者(もしくはスーパーユーザ)のみがそのオブジェクトに対して変更を加えることができます [1]。その他のユーザがオブジェクトを使うためには、権限が与えられていなければいけません。

いくつかの異なる権限があります。SELECT(読み込み)、 INSERT(追加)、UPDATE(書き込み)、 DELETERULEREFERENCES (外部キー)、そして、TRIGGER です。(より詳細については GRANT のマニュアルページを参照して下さい。)オブジェクトを変更、削除する権利は常に所有者のみの権限です。権限を与えるためには、GRANTコマンドが使われます。もしjoeというユーザがいてaccountsというテーブルがあった場合、書き込みアクセスは下記のように与えることができます。

GRANT UPDATE ON accounts TO joe;

このコマンドを実行するユーザはそのテーブルの所有者でなければいけません。グループに権限を与える場合は以下のようにします。

GRANT SELECT ON accounts TO GROUP staff;

特別な"ユーザ"PUBLICは、システム上のすべてのユーザに権限を与えるために使われます。指定する権限に ALLと記述すると、すべての権限が与えられます。

権限を無効にするためにはREVOKEコマンドを使います。 REVOKE command:

REVOKE ALL ON accounts FROM PUBLIC;

テーブル所有者の特別な権限(つまり DROPGRANTREVOKEなどを実行する権利)は常に暗黙的に所有者であることを示すものであり、許可することも取り去ることもできません。しかし、テーブル所有者は自身の通常の権限を取り去ることができます。例えば、他のユーザと同じように所有者自身も読みとりのみのテーブルを作成することができます。

Notes

[1]

訳注:バージョン7.1からはalter table文でテーブルの所有者権限が変更できるようになっています