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で指定可能な多くのロール属性を変更することができます。 (指定し得るすべての属性に対応していますが、メンバ資格の追加および削除用のオプションはありません。 追加および削除にはGRANTとREVOKEを使用してください)。 このコマンドで指定しなかった属性は以前の設定のまま残ります。 データベーススーパーユーザはすべてのロールのすべての属性を変更することができます。 CREATEROLE権限を持つロールは、スーパーユーザ以外のロールに対してすべての属性を変更することができます。 通常のロールは自身のパスワードのみを変更することができます。
2番目の構文では、ロールの名前を変更することができます。 データベーススーパーユーザはすべてのロールの名前を変更できます。 CREATEROLE権限を持つロールはスーパーユーザ以外のロールに対してその名前を変更できます。 現在のセッションユーザの名前を変更することはできません (必要ならば別のユーザで接続してください)。 MD5暗号化パスワードではロール名を暗号用のソルトとして使用しますので、パスワードがMD5で暗号化されている場合、ロール名を変更するとパスワードは空になります。
残りの構文では、ロールの指定された設定変数用のセッションデフォルトを変更します。 その後、ロールが新しいセッションを始めると常に、postgresql.conf内の設定やpostgresコマンドラインより受け取った設定は上書きされ、指定された値がセッションのデフォルトとなります (LOGIN権限を持たないロールではセッションのデフォルトは影響ありません)。 通常のロールは自身のセッションのデフォルトのみを変更することができます。 スーパーユーザはすべてのユーザのセッションのデフォルトを変更することができます。 CREATEROLE権限を持つロールはスーパーユーザ以外のロールに対してそのセッションのデフォルトを変更することができます。 変数の中にはこの方法で変更できないものがあります。 また、スーパーユーザがこのコマンドを発行した時にのみ変更できるものもあります。
属性を変更するロールの名前です。
これらの句は、元々CREATE ROLEで設定された属性を変更します。 詳細はCREATE ROLEのマニュアルページを参照してください。
ロールの新しい名前です。
ロールの指定した設定パラメータ用のセッションデフォルトを指定した値に設定します。 valueがDEFAULT、またはRESETが使用されていた場合、ロール固有の変数設定は削除され、新しいセッションではロールはシステム全体のデフォルト設定を継承します。 すべてのロール固有の設定を削除するにはRESET ALLを使用してください。 SET FROM CURRENTはセッションのパラメータ値をロール固有の値として保管します。
新規にロールを追加するにはCREATE ROLEを使用してください。 また、ロールを削除するにはDROP ROLEを使用してください。
ALTER ROLEではロールのメンバ資格を変更できません。 メンバ資格の変更にはGRANTおよびREVOKEを使用してください。
このコマンドで暗号化しないパスワードを指定するときには注意しなければなりません。 パスワードはサーバに平文で送信されます。 クライアントのコマンド履歴やサーバのログにこれが残ってしまうかもしれません。 また、psqlには\passwordコマンドがあります。これを使用して後でパスワードを安全に変更することができます。
ロールではなくデータベースにセッションのデフォルトを結びつけることもできます。 ALTER DATABASEを参照してください。 競合する場合、ロール固有の設定がデータベース固有の設定を上書きします。
ロールのパスワードを変更します。
ALTER ROLE davide WITH PASSWORD 'hu8jmn3';
パスワードの有効期限を変更します。 以下では、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;