PostgreSQL | ロール(ユーザー) ROLE 作成 | ロール名の変更(ALTER ROLE)

ALTER ROLE コマンドを使用して、作成済みロールの名前を変更できる。ここではロール名を変更する方法について説明する。

ロール名を変更する

ロール名を変更するには ALTER ROLE コマンドを使用する。形式は次のとおりである。

ALTER ROLE name RENAME TO new_name

変更対象のロール (role_name) の名前を新しい名前 (new_name) に変更する。現在のセッションユーザー、つまり接続時に使用したロールの名前は変更できない。つまり、自分自身の名前は変更できない。

スーパーユーザーはすべてのロール名を変更できる。CREATEROLE 権限を持つロールは、スーパーユーザーではないロールの名前を変更できる。

また、クライアント認証方式として md5 を使用している場合、ロール名を変更すると接続パスワードが削除されるため、新しく設定する必要がある。

それでは実際に試してみる。スーパーユーザー postgres で PostgreSQL に接続し、作成済みロール kuma の名前を変更する。

まず、現在作成されているロール一覧を確認してみる。

postgres=> \du
                                 롤 목록
  롤 이름  |                      속성                      | 소속 그룹:
-----------+------------------------------------------------+------------
 kuma      |                                                | {}
 postgres  | 슈퍼유저, 롤 만들기, DB 만들기, 복제, RLS 통과 | {}
 superkuma | DB 만들기                                     +| {}
           | 3개 연결                                       |


postgres=>

現在 3 つのロールが作成されている。

では kuma ロールの名前を mykuma に変更する。次のように実行する。

devkuma=# alter role kuma rename to mykuma;
알림:  롤 이름이 변경 되어 MD5 암호를 지웠습니다
ALTER ROLE
devkuma=#

ロール名が mykuma に変更された。また、このロールは認証方式として md5 を使用していたため、「알림: 롤 이름이 변경 되어 MD5 암호를 지웠습니다」と表示されているように、パスワードが削除された。

そこで ALTER ROLE コマンドを使用して接続パスワードを再設定する。

devkuma=# alter role mykuma with password 'mybear';
ALTER ROLE
devkuma=#

mykuma ロールの接続パスワードが設定された。

確認のため、もう一度作成済みロール一覧を確認してみる。

devkuma=# \du
                                 롤 목록
  롤 이름  |                      속성                      | 소속 그룹:
-----------+------------------------------------------------+------------
 mykuma    |                                                | {}
 postgres  | 슈퍼유저, 롤 만들기, DB 만들기, 복제, RLS 통과 | {}
 superkuma | DB 만들기                                     +| {}
           | 3개 연결                                       |


devkuma=#

kuma ロールが mykuma ロールに名前変更されていることを確認できる。ここで、ロールに設定されている属性はそのままである。

ここまで、ALTER ROLE コマンドを使用して作成済みロールの名前を変更する方法について説明した。