他のバージョンの文書10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

ALTER ROLE

名前

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

概要

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

ここでoptionは以下の通りです。
    
      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | CREATEUSER | NOCREATEUSER
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | 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 ROLEPostgreSQLロールの属性を変更します。

このコマンドの最初の構文では、CREATE ROLEで指定可能な多くのロール属性を変更することができます。 (指定し得るすべての属性に対応していますが、メンバ資格の追加および削除用のオプションはありません。 追加および削除にはGRANTREVOKEを使用してください。) このコマンドで指定しなかった属性は以前の設定のまま残ります。 データベーススーパーユーザはすべてのロールのすべての属性を変更することができます。 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
CONNECTION LIMIT connlimit
PASSWORD password
ENCRYPTED
UNENCRYPTED
VALID UNTIL 'timestamp'

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

new_name

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

database_name

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

configuration_parameter
value

指定した設定パラメータに対して、ロールのセッションデフォルトを指定した値に設定します。 valueDEFAULT、または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