作成したユーザのALTER ROLEをつかってロールを変更する操作例を以下に記します。
(ALTER USERはALTER ROLEの別名になっています。したがって、ALTER ROLEをALTER USERにしても同様の動作になります。)
使用したOSはCentOS6になります。
また、使用したPostgreSQLのバージョンは以下の通りです。
postgres=# select version(); version ------------------------------------------------------------------------------------------------------------------ PostgreSQL 8.4.13 on x86_64-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4), 64-bit (1 行)
ユーザを作成して、ALTER ROLEでスーパーユーザ権限などを付与してみます。
postgres=# create user sakura with password 'sakurapass'; CREATE ROLE postgres=# create user tsubaki with password 'tsubakipass'; CREATE ROLE postgres=# \du ロール一覧 ロール名 | 属性 | メンバー ----------+--------------------+---------- postgres | スーパーユーザ | {} : ロールを作成できる : DBを作成できる sakura | | {} tsubaki | | {}
postgres=# ALTER ROLE sakura WITH SUPERUSER; ALTER ROLE postgres=# \du ロール一覧 ロール名 | 属性 | メンバー ----------+--------------------+---------- postgres | スーパーユーザ | {} : ロールを作成できる : DBを作成できる sakura | スーパーユーザ | {} tsubaki | | {}
postgres=# ALTER ROLE tsubaki WITH SUPERUSER CREATEDB CREATEROLE; ALTER ROLE postgres=# \du ロール一覧 ロール名 | 属性 | メンバー ----------+--------------------+---------- postgres | スーパーユーザ | {} : ロールを作成できる : DBを作成できる sakura | スーパーユーザ | {} tsubaki | スーパーユーザ | {} : ロールを作成できる : DBを作成できる
psqlコマンドでログインし、\hコマンドでALTER ROLEの説明を表示しました。
以下のようにオプションが多数ありますので、必要に応じて設定してください。
postgres=# \h ALTER ROLE コマンド: ALTER ROLE 説明: データベースのロールを変更する 書式: ALTER ROLE ロール名 [ [ WITH ] オプション [ ... ] ] オプションは以下のいずれか: SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | CONNECTION LIMIT 最大接続数 | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'パスワード' | VALID UNTIL 'タイムスタンプ' ALTER ROLE ロール名 RENAME TO 新しい名前 ALTER ROLE ロール名 SET 設定パラメータ名 { TO | = } { 値 | DEFAULT } ALTER ROLE ロール名 SET 設定パラメータ名 FROM CURRENT ALTER ROLE ロール名 RESET 設定パラメータ名 ALTER ROLE ロール名 RESET ALL