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 명령을 사용하여 생성 된 역할의 이름을 변경하는 방법에 대해 알아보았다.