PostgreSQL 9.0.4文書 | ||||
---|---|---|---|---|
前のページ | 巻戻し | 第 20章データベースロールと権限 | 早送り | 次のページ |
オブジェクトが作成されるとその所有者が割り当てられます。 所有者はその作成文を実行したロールです。 大部分のオブジェクトに対し、初期状態では所有者(またはスーパーユーザ)のみオブジェクトにどんな操作でも行えます。 その他のロールがオブジェクトを使うためには、権限が与えられていなければいけません。 さまざまな異なる種類の権限があります。 SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER、CREATE、CONNECT、TEMPORARY、EXECUTE、およびUSAGEです。 PostgreSQLでサポートされている様々な権限についての詳細情報は、GRANTマニュアルページを参照してください。
権限を与えるためには、GRANTコマンドが使われます。 もしjoeというロールがあってaccountsというテーブルがあった場合、このテーブルを更新する権限は下記のように与えることができます。
GRANT UPDATE ON accounts TO joe;
PUBLICという特別な名前は、システム上の全てのロールに権限を与えるために使われます。 指定する権限にALLと記述すると、そのオブジェクトに適用される全ての権限が与えられます。
権限を取り消すためには(剥奪という意味の)名前の通りのREVOKEコマンドを使用してください。
REVOKE ALL ON accounts FROM PUBLIC;
オブジェクト所有者の特別な権限(つまりオブジェクトを変更または削除できる権利)は常に暗黙的に所有者であることを示すものであり、許可することも取り去ることもできません。 しかし、テーブル所有者は自身の通常の権限を取り去ることができます。 例えば、他のユーザに対してと同じように所有者自身に対してもテーブルを読み取り専用にすることができます。
ある種のオブジェクトでは、 ALTERコマンドを使用して、オブジェクトの新しい所有者を割り当てることができます。 スーパーユーザは常にこれを行うことができます。 一般のロールでは、オブジェクトの現在の所有者(または所有者のロールのメンバ)であり、かつ、新しい所有者のロールのメンバである場合に限って、これを行うことができます。