2.7. 権限

データベースオブジェクトを作成すると、作成者はその所有者となります。 デフォルトでは、オブジェクトの所有者のみがオブジェクトに対して操作を行うことができます。 他のユーザがこのオブジェクトを使用するには、権限 が付与されていなければなりません。 (すべてのオブジェクトにアクセスできるスーパーユーザ権限を持つユーザもいます。)

Note: テーブルの所有者、インデックス、シーケンスおよびビューを変更するには、ALTER TABLE コマンドを使用します。

権限にはいくつかの種類があります。 すわなち SELECTINSERTUPDATEDELETERULEREFERENCESTRIGGERCREATETEMPORARYEXECUTEUSAGE、そして ALL PRIVILEGES です。 PostgreSQL がサポートするさまざまな権限の詳細については GRANT リファレンスページを参照してください。 以降の節および章でもこれらの権限の使用方法についての説明があります。

オブジェクトの変更や削除の権限は常に所有者のみに与えられるものです。

権限を割り当てるには、GRANT コマンドを使用します。 たとえば、joe という既存のユーザと accounts という既存のテーブルがある場合、このテーブルを更新する権限を付与するには以下のようにします。

GRANT UPDATE ON accounts TO joe;

このコマンドを実行するユーザはテーブルの所有者でなければなりません。 グループに権限を付与するには次のようにします。

GRANT SELECT ON accounts TO GROUP staff;

システム内のすべてのユーザに権限を付与するには、特別な"ユーザ"名である PUBLIC を使用することができます。 特定の権限名の代わりに ALL を指定すると、すべての権限が付与されます。

権限を取り消すには REVOKE コマンドを使用します。

REVOKE ALL ON accounts FROM PUBLIC;

テーブル所有者の特別の権限 (DROPGRANTREVOKE を行う権限など) は、所有者であることを前提とした権限なので、付与したり取り消したりすることはできません。 しかしテーブル所有者は、テーブルを他のユーザ同様に自分自身に対しても読み取り専用にしたいときなどに、自分の通常の権限を取り消すことはできます。