.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
.TH "ALTER ROLE" "" "2007-05-04" "SQL - 言語" "SQLコマンド"
.SH NAME
ALTER ROLE \- データベースロールを変更する

.SH SYNOPSIS
.sp
.nf
ALTER ROLE \fIname\fR [ [ WITH ] \fIoption\fR [ ... ] ]

ここで\fIoption\fRは以下の通りです。
    
      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | CREATEUSER | NOCREATEUSER
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | CONNECTION LIMIT \fIconnlimit\fR
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '\fIpassword\fR'
    | VALID UNTIL '\fItimestamp\fR' 

ALTER ROLE \fIname\fR RENAME TO \fInewname\fR

ALTER ROLE \fIname\fR SET \fIconfiguration_parameter\fR { TO | = } { \fIvalue\fR | DEFAULT }
ALTER ROLE \fIname\fR RESET \fIconfiguration_parameter\fR
.sp
.fi
.SH "説明"
.PP
\fBALTER ROLE\fRはPostgreSQLロールの属性を変更します。
.PP
このコマンドの最初の構文では、CREATE ROLE [\fBcreate_role\fR(l)]で指定可能な多くのロール属性を変更することができます。
詳細はCREATE ROLE [\fBcreate_role\fR(l)]を参照してください
（指定し得るすべての属性に対応していますが、メンバ資格の追加および削除用のオプションはありません。
追加および削除にはGRANT [\fBgrant\fR(l)]とREVOKE [\fBrevoke\fR(l)]を使用してください）。
このコマンドで指定しなかった属性は以前の設定のまま残ります。
データベーススーパーユーザはすべてのロールのすべての属性を変更することができます。
CREATEROLE権限を持つロールは、スーパーユーザ以外のロールに対してすべての属性を変更することができます。
通常のロールは自身のパスワードのみを変更することができます。
.PP
2番目の構文では、ロールの名前を変更することができます。
データベーススーパーユーザはすべてのロールの名前を変更できます。
CREATEROLE権限を持つロールはスーパーユーザ以外のロールに対してその名前を変更できます。
現在のセッションユーザの名前を変更することはできません
（必要ならば別のユーザで接続してください）。
MD5暗号化パスワードではロール名を暗号用のソルトとして使用しますので、パスワードがMD5で暗号化されている場合、ロール名を変更するとパスワードは空になります。
.PP
3番目および4番目の構文では、ロールの指定された設定変数用のセッションデフォルトを変更します。
その後、ロールが新しいセッションを始めると常に、\fIpostgresql.conf\fR内の設定や\fBpostgres\fRコマンドラインより受け取った設定は上書きされ、指定された値がセッションのデフォルトとなります
（LOGIN権限を持たないロールではセッションのデフォルトは影響ありません）。
通常のロールは自身のセッションのデフォルトのみを変更することができます。
スーパーユーザはすべてのユーザのセッションのデフォルトを変更することができます。
CREATEROLE権限を持つロールはスーパーユーザ以外のロールに対してそのセッションのデフォルトを変更することができます。
変数の中にはこの方法で変更できないものがあります。
また、スーパーユーザがこのコマンドを発行した時にのみ変更できるものもあります。
.SH "パラメータ"
.TP
\fB\fIname\fB\fR
属性を変更するロールの名前です。
.TP
\fBSUPERUSER\fR
.TP
\fBNOSUPERUSER\fR
.TP
\fBCREATEDB\fR
.TP
\fBNOCREATEDB\fR
.TP
\fBCREATEROLE\fR
.TP
\fBNOCREATEROLE\fR
.TP
\fBCREATEUSER\fR
.TP
\fBNOCREATEUSER\fR
.TP
\fBINHERIT\fR
.TP
\fBNOINHERIT\fR
.TP
\fBLOGIN\fR
.TP
\fBNOLOGIN\fR
.TP
\fBCONNECTION LIMIT \fIconnlimit\fB\fR
.TP
\fBPASSWORD \fIpassword\fB\fR
.TP
\fBENCRYPTED\fR
.TP
\fBUNENCRYPTED\fR
.TP
\fBVALID UNTIL '\fItimestamp\fB'\fR
これらの句は、元々CREATE ROLE [\fBcreate_role\fR(l)]で設定された属性を変更します。
詳細はCREATE ROLE [\fBcreate_role\fR(l)]を参照してください。
.TP
\fB\fInewname\fB\fR
ロールの新しい名前です。
.TP
\fB\fIconfiguration_parameter\fB\fR
.TP
\fB\fIvalue\fB\fR
ロールの指定した設定パラメータ用のセッションデフォルトを指定した値に設定します。
\fIvalue\fRがDEFAULT、またはRESETが使用されていた場合、ロール固有の変数設定は削除され、新しいセッションではロールはシステム全体のデフォルト設定を継承します。
すべてのロール固有の設定を削除するにはRESET ALLを使用してください。

取り得るパラメータ名とその値に関する詳細はSET [\fBset\fR(l)]およびin the documentationを参照してください。
.SH "注釈"
.PP
新規にロールを追加するにはCREATE ROLE [\fBcreate_role\fR(l)]を使用してください。
また、ロールを削除するにはDROP ROLE [\fBdrop_role\fR(l)]を使用してください。
.PP
\fBALTER ROLE\fRではロールのメンバ資格を変更できません。
メンバ資格の変更にはGRANT [\fBgrant\fR(l)]およびREVOKE [\fBrevoke\fR(l)]を使用してください。
.PP
このコマンドで暗号化しないパスワードを指定するときには注意しなければなりません。
パスワードはサーバに平文で送信されます。
クライアントのコマンド履歴やサーバのログにこれが残ってしまうかもしれません。
また、psql [\fBpsql\fR(1)]には\fB\\password\fRコマンドがあります。これを使用して後でパスワードを安全に変更することができます。
.PP
ロールではなくデータベースにセッションのデフォルトを結びつけることもできます。
ALTER DATABASE [\fBalter_database\fR(l)]を参照してください。
競合する場合、ロール固有の設定がデータベース固有の設定を上書きします。
.SH "例"
.PP
ロールのパスワードを変更します。
.sp
.nf
ALTER ROLE davide WITH PASSWORD 'hu8jmn3';
.sp
.fi
.PP
パスワードの有効期限を変更します。
以下では、2015年5月4日正午（UTCから1時間進んだタイムゾーン付き）にパスワードが無効となるように変更しています。
.sp
.nf
ALTER ROLE chris VALID UNTIL 'May 4 12:00:00 2015 +1';
.sp
.fi
.PP
パスワードの有効期限を無効にします。
.sp
.nf
ALTER ROLE fred VALID UNTIL 'infinity';
.sp
.fi
.PP
ロールに他のロールの作成権限と新しいデータベースの作成権限を与えます。
.sp
.nf
ALTER ROLE miriam CREATEROLE CREATEDB;
.sp
.fi
.PP
ロールにmaintenance_work_memパラメータ用のデフォルト以外の設定を与えます。
.sp
.nf
ALTER ROLE worker_bee SET maintenance_work_mem = 100000;
.sp
.fi
.SH "互換性"
.PP
\fBALTER ROLE\fR文はPostgreSQLの拡張です。
.SH "関連項目"
CREATE ROLE [\fBcreate_role\fR(l)], DROP ROLE [\fBdrop_role\fR(l)], SET [\fBset\fR(l)]
