MySQL에서 사용자 계정의 이름을 변경하려면 RENAME USER 명령어를 사용한다.
데이터베이스를 운영하다 보면 특정 사용자의 계정명을 변경해야 하는 경우가 발생할 수 있다.
예를 들어, 보안 정책에 따라 새로운 네이밍 규칙을 적용하거나, 기존 사용자 계정을 재정리할 때 계정명을 변경해야 할 수 있다.

1. RENAME USER 명령어란?
RENAME USER 명령어는 기존 사용자 계정의 이름을 새로운 이름으로 변경하는 데 사용된다.
이 명령어를 사용하면 사용자의 비밀번호, 권한, 설정 등은 그대로 유지되면서 계정명만 변경할 수 있다.
기본 구문
RENAME USER '현재사용자'@'호스트' TO '새사용자'@'호스트';
- '현재사용자'@'호스트' : 변경할 기존 계정
- '새사용자'@'호스트' : 변경할 새로운 계정명
2. 기본적인 사용자 이름 변경하기
예제 1: 단일 사용자 이름 변경
RENAME USER 'olduser'@'localhost' TO 'newuser'@'localhost';
위 명령어를 실행하면 olduser@localhost 계정명이 newuser@localhost 로 변경된다.
변경된 계정은 기존과 동일한 비밀번호, 권한, 설정을 그대로 유지한다.
예제 2: 원격 사용자 계정 이름 변경
RENAME USER 'remoteuser'@'%' TO 'newremoteuser'@'%';
'%' 기호는 모든 원격 호스트에서 접근할 수 있는 사용자를 의미한다.
위 명령어를 실행하면 remoteuser 계정이 newremoteuser 로 변경되며, 원격에서 접속할 수 있는 권한은 유지된다.
3. 여러 사용자 계정 이름 변경하기
MySQL에서는 한 번에 여러 사용자 계정명을 변경할 수도 있다.
예제 3: 다중 사용자 계정 이름 변경
RENAME USER 'user1'@'localhost' TO 'newuser1'@'localhost',
'user2'@'localhost' TO 'newuser2'@'localhost';
이 명령어는 user1 → newuser1, user2 → newuser2 로 한 번에 변경한다.
여러 개의 계정을 동시에 변경해야 할 경우 매우 유용하게 사용할 수 있다.
4. RENAME USER 사용 시 주의할 점
1. RENAME USER는 존재하는 사용자에게만 적용 가능
- 존재하지 않는 사용자에 대해 실행하면 오류가 발생한다.
- 만약 사용자가 존재하는지 먼저 확인하려면 다음 명령어를 사용한다.
SELECT User, Host FROM mysql.user WHERE User = 'olduser';
2. 사용자의 모든 권한이 자동으로 이전됨
- RENAME USER 를 실행하면 새 계정명으로 자동 이전되므로, 따로 권한을 부여할 필요가 없다.
- 하지만 변경 후에도 기존 계정명이 여전히 남아 있는지 확인하는 것이 좋다.
SELECT * FROM mysql.db WHERE User = 'newuser';
3. RENAME USER는 연결된 세션에 영향을 미칠 수 있음
- 데이터베이스와 연결된 사용자가 있는 경우, 해당 계정을 RENAME USER 하면 기존 세션이 유지되지만, 새로운 로그인부터는 새로운 계정명을 사용해야 한다.
- 따라서 변경 후에는 사용자에게 변경 사실을 미리 공지하는 것이 중요하다.
5. RENAME USER가 불가능한 경우
MySQL의 일부 버전에서는 RENAME USER 명령어가 지원되지 않거나 특정 상황에서 사용할 수 없는 경우가 있다.
만약 아래와 같은 오류가 발생하면 수동으로 계정을 변경해야 한다.
대체 방법 1: 새로운 계정 생성 후 권한 복사
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'NewPassword!';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
DROP USER 'olduser'@'localhost';
위 방법은 기존 계정을 삭제한 후 새로운 계정을 생성하는 방식이다.
대체 방법 2: 직접 mysql.user 테이블 수정 (권장되지 않음)
UPDATE mysql.user SET User = 'newuser' WHERE User = 'olduser';
FLUSH PRIVILEGES;
주의: MySQL 8.0 이상에서는 mysql.user 테이블을 직접 수정하는 것이 금지되어 있으며,
대신 RENAME USER 또는 새 계정 생성 후 권한 이전 방식을 사용하는 것이 권장된다.
6. RENAME USER와 ALTER USER의 차이점
기능 | RENAME USER | ALTER USER |
계정 이름 변경 | O | X |
비밀번호 변경 | X | O |
인증 방식 변경 | X | O |
계정 잠금/해제 | X | O |
계정이 유지되는가? | O (이름만 변경) | O (설정 변경) |
- ALTER USER 는 계정의 비밀번호 변경, 계정 잠금/해제, 인증 방식 변경 등에 사용된다.
- RENAME USER 는 계정명을 변경하는 데 사용된다.
7. 실무에서 RENAME USER 활용하기
실전 예제 4: 특정 프로젝트별 계정 네이밍 변경
데이터베이스 관리자가 특정 프로젝트와 관련된 계정을 정리할 때 유용하다.
RENAME USER 'dev_john'@'localhost' TO 'john_projectA'@'localhost';
이 명령어를 실행하면 dev_john 계정이 john_projectA 로 변경된다.
실전 예제 5: 직원 퇴사 후 계정 네이밍 변경
퇴사한 직원의 계정을 유지하면서도 이름을 변경할 경우 유용하다.
RENAME USER 'mike'@'%' TO 'inactive_mike'@'%';
이제 inactive_mike 계정이 되어 퇴사한 직원의 계정임을 쉽게 구분할 수 있다.
마무리
MySQL의 RENAME USER 명령어는 사용자의 계정명을 변경하는 데 사용되며, 기존의 비밀번호, 권한, 설정은 유지된다.
실무에서는 보안 정책, 사용자 계정 정리, 프로젝트별 네이밍 규칙 적용 등 다양한 상황에서 유용하게 활용할 수 있다.
사용하기 전에 반드시 기존 계정이 존재하는지 확인하고, 변경 후에도 정상적으로 로그인할 수 있는지 점검하는 것이 중요하다.
공식 가이드 문서
MySQL RENAME USER 공식 문서:
https://dev.mysql.com/doc/refman/8.0/en/rename-user.html
'DB' 카테고리의 다른 글
[MySQL] LOCK TABLES 완벽 가이드 사용법(테이블 잠금) (0) | 2025.04.02 |
---|---|
[MySQL] FLUSH PRIVILEGES 완벽 가이드 사용법(캐시 갱신) (0) | 2025.04.02 |
[MySQL] SHOW GRANTS 완벽 가이드 사용법(사용자 권한 확인) (0) | 2025.04.02 |
[MySQL] SET PASSWORD 완벽 가이드 사용법(비밀번호 변경) (0) | 2025.04.02 |
[MySQL] ALTER USER 완벽 가이드 사용법(사용자 계정 변경) (0) | 2025.04.01 |
[MySQL] DROP USER 완벽 가이드 사용법(사용자 계정 삭제) (0) | 2025.04.01 |
[MySQL] CREATE USER 완벽 가이드 사용법(사용자 생성) (0) | 2025.02.24 |
[MySQL] CREATE SPATIAL INDEX 완벽 가이드 사용법(공간 데이터 검색을 위한 고성능 인덱스) (0) | 2025.02.20 |