PostgreSQL 9.0.0文書
前のページ | 巻戻し |  | 早送り | 次のページ

# ALTER DEFAULT PRIVILEGES

## 名前

ALTER DEFAULT PRIVILEGES -- デフォルトのアクセス権限を定義する

## 概要

    ALTER DEFAULT PRIVILEGES
        [ FOR { ROLE | USER } target_role [, ...] ]
        [ IN SCHEMA schema_name [, ...] ]
        abbreviated_grant_or_revoke

    ここでabbreviated_grant_or_revokeは以下のいずれかです。

    GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
        [,...] | ALL [ PRIVILEGES ] }
        ON TABLES
        TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

    GRANT { { USAGE | SELECT | UPDATE }
        [,...] | ALL [ PRIVILEGES ] }
        ON SEQUENCES
        TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

    GRANT { EXECUTE | ALL [ PRIVILEGES ] }
        ON FUNCTIONS
        TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

    REVOKE [ GRANT OPTION FOR ]
        { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
        [,...] | ALL [ PRIVILEGES ] }
        ON TABLES
        FROM { [ GROUP ] role_name | PUBLIC } [, ...]
        [ CASCADE | RESTRICT ]

    REVOKE [ GRANT OPTION FOR ]
        { { USAGE | SELECT | UPDATE }
        [,...] | ALL [ PRIVILEGES ] }
        ON SEQUENCES
        FROM { [ GROUP ] role_name | PUBLIC } [, ...]
        [ CASCADE | RESTRICT ]

    REVOKE [ GRANT OPTION FOR ]
        { EXECUTE | ALL [ PRIVILEGES ] }
        ON FUNCTIONS
        FROM { [ GROUP ] role_name | PUBLIC } [, ...]
        [ CASCADE | RESTRICT ]

## 説明

`ALTER DEFAULT PRIVILEGES`により今後作成されるオブジェクトに適用される権限を設定することができます。 （既存のオブジェクトに割り当てられている権限には影響しません。） 現時点ではテーブル（ビューを含む）、シーケンス、関数用の権限のみを変更可能です。

ユーザ自身、ユーザがメンバとして属するロールにより作成されるオブジェクト向けのデフォルト権限を変更することができます。 権限は大域的に（つまり現在のデータベース内に作成されるすべてのオブジェクトに対して）設定することも、指定したスキーマ内に作成されるオブジェクトのみに対して設定することもできます。 スキーマ単位で指定されるデフォルト権限は、大域的な個々の種類のオブジェクト用のデフォルト権限に追加されます。

GRANTの説明通り、任意の種類のオブジェクトのデフォルト権限は通常、オブジェクト所有者に対して付与可能な権限すべてを付与します。 また、同様に`PUBLIC`に対して一部の権限を付与することもできます。 しかしこの動作は`ALTER DEFAULT PRIVILEGES`を用いて大域デフォルト権限により変更可能です。

### パラメータ

`target_role`

  現在のロールがメンバとして属する、既存のロールの名前です。 `FOR ROLE`を省略した場合、現在のロールと仮定されます。

`schema_name`

  既存のスキーマの名前です。 各`target_role`は指定したスキーマそれぞれに対して`CREATE`権限を持つ必要があります。 `IN SCHEMA`を省略した場合、大域的なデフォルト権限が変更されます。

`role_name`

  権限を付与または取り上げる、既存のロールの名前です。 このパラメータ、および`abbreviated_grant_or_revoke`内の他のパラメータは、 GRANTやREVOKEの説明通りに動作します。 ただし、指名したオブジェクトではなくオブジェクトクラス全体に対して権限を設定する点が異なります。

## 注釈

デフォルト権限としてすでに割り当てられている情報を入手するためにはpsqlの`\ddp`コマンドを使用してください。 権限の値の意味は、GRANTの`\dp`の説明と同じです。

デフォルト権限を変更したロールを削除したい場合、デフォルト権限の項目を取り除くために、そのデフォルト権限の変更を元に戻すか`DROP OWNED BY`を使用する必要があります。

## 例

`myschema`スキーマ内に今後作成されるすべてのテーブル（およびビュー）に対して、全員にSELECT権限を付与します。 また、`webuser`ロールにはそれらに挿入できるようにします。

    ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT ON TABLES TO PUBLIC;
    ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT ON TABLES TO webuser;

今後作成されるテーブルが通常以外の権限を持たないように、上を元に戻します。

    ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE SELECT ON TABLES FROM PUBLIC;
    ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser;

今後`admin`ロールにより作成されるすべての関数について、通常関数に付与される、全員に対するEXECUTE権限を取り除きます。

    ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;

## 互換性

標準SQLには`ALTER DEFAULT PRIVILEGES`文はありません。

## 関連項目

GRANT, REVOKE

前のページ | ホーム | 次のページ
ALTER DATABASE | 上に戻る | ALTER DOMAIN