ロールの変更

広告

一度作成したロールの属性を変更することが出来ます。基本的に「CREATE ROLE」で設定出来た属性を全て変更可能です。変更するにはスーパーユーザーか「CREATEROLE」権限を持っていなければいけません。「CREATEROLE」権限を持つロールは、スーパーユーザー以外のロールの属性を変更可能です。またそれ以外のロールは、自分のパスワードの変更だけが可能となっています。

変更するには「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 newname

ALTER ROLE name SET parameter { TO | = } { value | DEFAULT }
ALTER ROLE name RESET parameter

基本的には「CREATE ROLE」と同じで下記のような感じです。

ALTER ROLE role_name WITH PASSWORD 'password'
ALTER ROLE role_name WITH CREATEROLE CREATEDB

またロール名の変更も可能です。ロール名変更に必要な権限は先ほどと同じです。

ALTER ROLE role_name TO new_role_name

では実際に試して見ます。まずロールを1つ作成します。

ロールの変更

このロールの「createdb」権限を無くし「createrole」権限を付けてみます。

alter role testrole with createrole nocreatedb;

ロールの変更

次にパスワードも変更してみます。

alter role testrole with password 'roletest';

ロールの変更

( Written by Tatsuo Ikura )