ALTER ROLE(7)

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

SYNOPSIS

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 newname
ALTER ROLE name SET configuration_parameter { TO | = } { value | DEFAULT }
ALTER ROLE name SET configuration_parameter FROM CURRENT
ALTER ROLE name RESET configuration_parameter
ALTER ROLE name RESET ALL

説明

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

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

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

残りの構文では、ロールの指定された設定変数用のセッションデフォルトを変更します。 その後、ロールが新しいセッションを始めると常に、postgresql.conf内の設定やpostgresコマンドラインより受け取った設定は上書きされ、指定された値がセッションのデフォルトとなります これはログイン時のみに発生しますので、SET ROLE [set_role(7)]を行ったロールに関連付けされた設定は無視されます。 スーパーユーザはすべてのユーザのセッションのデフォルトを変更することができます。 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(7)]で設定された属性を変更します。 詳細はCREATE ROLEのマニュアルページを参照してください。

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

configuration_parameter

value
    ロールの指定した設定パラメータ用のセッションデフォルトを指定した値に設定します。 valueがDEFAULT、またはRESETが使用されていた場合、ロール固有の変数設定は削除され、新しいセッションではロールはシステム全体のデフォルト設定を継承します。 すべてのロール固有の設定を削除するにはRESET ALLを使用してください。 SET FROM CURRENTはセッションのパラメータ値をロール固有の値として保管します。 ロール固有の変数設定はログイン時のみに影響を与えます。 SET ROLE [set_role(7)]はロール固有の変数設定を処理しません。 取り得るパラメータ名とその値に関する詳細はSET [set(7)]およびin the documentationを参照してください。

注釈

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

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

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

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

例

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

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;

互換性

ALTER ROLE文はPostgreSQLの拡張です。

関連項目
CREATE ROLE [create_role(7)], DROP ROLE [drop_role(7)], SET [set(7)]