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

# ALTER ROLE

## 名前

ALTER ROLE -- データベースロールを変更する

## 概要

    ALTER ROLE name [ [ WITH ] option [ ... ] ]

    ここでoptionは以下の通りです。

          SUPERUSER | NOSUPERUSER
        | CREATEDB | NOCREATEDB
        | CREATEROLE | NOCREATEROLE
        | CREATEUSER | NOCREATEUSER
        | INHERIT | NOINHERIT
        | LOGIN | NOLOGIN
        | REPLICATION | NOREPLICATION
        | CONNECTION LIMIT connlimit
        | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
        | VALID UNTIL 'timestamp'

    ALTER ROLE name RENAME TO new_name

    ALTER ROLE name [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT }
    ALTER ROLE name [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT
    ALTER ROLE name [ IN DATABASE database_name ] RESET configuration_parameter
    ALTER ROLE name [ IN DATABASE database_name ] RESET ALL

## 説明

`ALTER ROLE`はPostgreSQLロールの属性を変更します。

このコマンドの最初の構文では、CREATE ROLEで指定可能な多くのロール属性を変更することができます。 （指定し得るすべての属性に対応していますが、メンバ資格の追加および削除用のオプションはありません。 追加および削除にはGRANTとREVOKEを使用してください。） このコマンドで指定しなかった属性は以前の設定のまま残ります。 データベーススーパーユーザはすべてのロールのすべての属性を変更することができます。 `CREATEROLE`権限を持つロールは、スーパーユーザおよびレプリケーション以外のロールに対してすべての属性を変更することができます。 通常のロールは自身のパスワードのみを変更することができます。

2番目の構文ではロールの名前を変更することができます。 データベーススーパーユーザはすべてのロールの名前を変更できます。 `CREATEROLE`権限を持つロールはスーパーユーザ以外のロールに対してその名前を変更できます。 現在のセッションユーザの名前を変更することはできません。 （必要ならば別のユーザで接続してください）。 `MD5`暗号化パスワードではロール名を暗号用のソルトとして使用しますので、パスワードが`MD5`で暗号化されている場合、ロール名を変更するとパスワードは空になります。

残りの構文では、全データベース用、または`IN DATABASE`句が指定された場合はそのデータベース用のセッションに対するロールの設定変数についてのセッションデフォルトを変更します。 その後、ロールが新しいセッションを始めると常に、`postgresql.conf`内の設定や`postgres`コマンドラインより受け取った設定は上書きされ、指定された値がセッションのデフォルトとなります。 これはログイン時のみに発生します。 SET ROLEまたはSET SESSION AUTHORIZATIONを実行しても新しい設定値は設定されません。 全データベースに対する設定群は、ロールに割り当てたデータベース固有の設定により上書きされます。 スーパーユーザはすべてのユーザのセッションのデフォルトを変更することができます。 `CREATEROLE`権限を持つロールはスーパーユーザ以外のロールのデフォルトを変更することができます。 通常のロールは自身のデフォルトのみを設定することができます。 設定変数の中にはこの方法で変更できないものがあります。 また、スーパーユーザがこのコマンドを発行した時にのみ変更できるものもあります。

## パラメータ

`name`

  属性を変更するロールの名前です。

`SUPERUSER`
`NOSUPERUSER`
`CREATEDB`
`NOCREATEDB`
`CREATEROLE`
`NOCREATEROLE`
`CREATEUSER`
`NOCREATEUSER`
`INHERIT`
`NOINHERIT`
`LOGIN`
`NOLOGIN`
`REPLICATION`
`NOREPLICATION`
`CONNECTION LIMIT` `connlimit`
`PASSWORD` `password`
`ENCRYPTED`
`UNENCRYPTED`
`VALID UNTIL` '`timestamp`'

  これらの句は、元々CREATE ROLEで設定された属性を変更します。 詳細は`CREATE ROLE`のマニュアルページを参照してください。

`new_name`

  ロールの新しい名前です。

`database_name`

  設定変数を設定する対象のデータベースの名前です。

`configuration_parameter`
`value`

  指定した設定パラメータに対して、ロールのセッションデフォルトを指定した値に設定します。 `value`が`DEFAULT`、または`RESET`が使用されていた場合、ロール固有の変数設定は削除され、新しいセッションではロールはシステム全体のデフォルト設定を継承します。 すべてのロール固有の設定を削除するには`RESET ALL`を使用してください。 `SET FROM CURRENT`はセッションのパラメータ値をロール固有の値として保管します。 `IN DATABASE`が指定された場合、設定パラメータは指定されたロールとデータベースのみで設定または削除されます。

  ロール固有の変数設定はログイン時のみに影響を与えます。 SET ROLEおよびSET SESSION AUTHORIZATIONはロール固有の変数設定を処理しません。

  取り得るパラメータ名とその値に関する詳細はSETおよび第18章を参照してください。

## 注釈

新規にロールを追加するにはCREATE ROLEを使用してください。 また、ロールを削除するにはDROP ROLEを使用してください。

`ALTER ROLE`ではロールのメンバ資格を変更できません。 メンバ資格の変更にはGRANTおよびREVOKEを使用してください。

このコマンドで暗号化しないパスワードを指定するときには注意しなければなりません。 パスワードはサーバに平文で送信されます。 クライアントのコマンド履歴やサーバのログにこれが残ってしまうかもしれません。 psqlには`\password`コマンドがあります。 これを使用してロールのパスワードを平文のパスワードをさらすことなく変更することができます。

ロールではなくデータベースにセッションのデフォルトを結びつけることもできます。 ALTER DATABASEを参照してください。 競合する場合、データベースとロールの組み合わせに固有な設定はロール固有の設定を上書きし、ロール固有の設定はデータベース固有の設定を上書きします。

## 例

ロールのパスワードを変更します。

    ALTER ROLE davide WITH PASSWORD 'hu8jmn3';

ロールのパスワードを削除します。

    ALTER ROLE davide WITH PASSWORD NULL;

パスワードの有効期限を変更します。 以下では、2015年5月4日正午（UTCから1時間進んだタイムゾーン付き）にパスワードが無効となるように変更しています。

    ALTER ROLE chris VALID UNTIL 'May 4 12:00:00 2015 +1';

パスワードの有効期限を無効にします。

    ALTER ROLE fred VALID UNTIL 'infinity';

ロールに他のロールの作成権限と新しいデータベースの作成権限を与えます。

    ALTER ROLE miriam CREATEROLE CREATEDB;

ロールにmaintenance_work_memパラメータ用のデフォルトとは異なる設定を与えます。

    ALTER ROLE worker_bee SET maintenance_work_mem = 100000;

ロールにデータベース固有のclient_min_messagesパラメータ用のデフォルトとは異なる設定を与えます。

    ALTER ROLE fred IN DATABASE devel SET client_min_messages = DEBUG;

## 互換性

`ALTER ROLE`文はPostgreSQLの拡張です。

## 関連項目

CREATE ROLE, DROP ROLE, SET

前のページ | ホーム | 次のページ
ALTER OPERATOR FAMILY | 上に戻る | ALTER SCHEMA