5.7. 権限

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

注意: テーブル、インデックス、シーケンスおよびビューの所有者を変更するには、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 を行う権限など)は、所有者であることを前提とした権限なので、付与したり取り消したりすることはできません。 しかしテーブル所有者は、テーブルを他のユーザ同様に自分自身に対しても読み取り専用にしたいときなどに、自分の通常の権限を取り消すことができます。