MySQL에서 사용자 계정을 변경하려면 ALTER USER 명령어를 사용한다.
이 명령어는 사용자의 비밀번호 변경, 계정 잠금 및 해제, 인증 플러그인 변경 등 다양한 작업을 수행할 수 있다.

1. ALTER USER 명령어란?
ALTER USER 명령어는 기존의 MySQL 사용자 계정을 변경하는 데 사용된다.
이 명령어를 사용하면 다음과 같은 작업이 가능하다.
- 비밀번호 변경
- 계정 잠금 및 해제
- 비밀번호 만료 설정
- 비밀번호 정책 적용
- 인증 플러그인 변경
- 리소스 제한 설정
기본 구문
ALTER USER '사용자명'@'호스트' [IDENTIFIED BY '새로운비밀번호'] [옵션];
- '사용자명'@'호스트' : 변경할 대상 사용자 계정
- IDENTIFIED BY '새로운비밀번호' : 사용자의 비밀번호 변경
- 옵션 : 계정 잠금, 비밀번호 정책 적용 등의 추가 설정 가능
2. ALTER USER로 비밀번호 변경하기
MySQL에서 가장 많이 사용하는 기능 중 하나는 사용자의 비밀번호 변경이다.
예제 1: 사용자 비밀번호 변경
ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'NewPassword123!';
위 명령어를 실행하면 testuser@localhost 사용자의 비밀번호가 NewPassword123! 로 변경된다.
비밀번호를 변경한 후에는 반드시 FLUSH PRIVILEGES 명령어를 실행할 필요가 없다.
예제 2: 모든 호스트에서 접근하는 사용자 비밀번호 변경
ALTER USER 'remoteuser'@'%' IDENTIFIED BY 'SecurePass456!';
'%' 는 모든 호스트에서 접속 가능한 사용자를 의미한다.
따라서 위 명령어를 실행하면 원격에서 접속하는 remoteuser 계정의 비밀번호가 변경된다.
3. 사용자 계정 잠금 및 해제
특정 사용자의 접근을 차단하려면 ACCOUNT LOCK 옵션을 사용하여 계정을 잠글 수 있다.
예제 3: 사용자 계정 잠금
ALTER USER 'testuser'@'localhost' ACCOUNT LOCK;
이 명령어를 실행하면 testuser 계정이 잠기며, 더 이상 로그인할 수 없게 된다.
사용자 계정이 잠긴 상태에서 로그인하면 다음과 같은 오류가 발생한다.
ERROR 3118 (HY000): Access denied for user 'testuser'@'localhost'. Account is locked.
예제 4: 사용자 계정 잠금 해제
ALTER USER 'testuser'@'localhost' ACCOUNT UNLOCK;
이 명령어를 실행하면 testuser 계정이 다시 활성화되며, 정상적으로 로그인할 수 있게 된다.
4. 비밀번호 만료 설정 및 관리
MySQL에서는 보안을 위해 사용자의 비밀번호를 일정 기간마다 변경하도록 비밀번호 만료 설정이 가능하다.
예제 5: 비밀번호 즉시 만료 처리
ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE;
이 명령어를 실행하면 testuser 사용자는 다음 로그인 시 반드시 새 비밀번호를 설정해야 한다.
만약 비밀번호를 변경하지 않으면 로그인할 수 없다.
예제 6: 비밀번호 만료 기간 설정
ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
이 명령어는 testuser 계정의 비밀번호를 90일 후 자동으로 만료되도록 설정한다.
5. 인증 플러그인 변경
MySQL에서는 사용자 인증 방식을 변경할 수도 있다.
예제 7: 사용자 인증 플러그인 변경
ALTER USER 'testuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPassword123!';
위 명령어는 testuser 계정의 인증 방식을 mysql_native_password 로 변경한다.
만약 MySQL 8.0에서 caching_sha2_password 인증 방식을 사용해야 한다면 다음과 같이 설정할 수 있다.
ALTER USER 'testuser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'NewSecurePass!';
이 방식은 MySQL 8.0에서 기본적으로 사용되며, 보안이 더 강화된 인증 방식이다.
6. 리소스 제한 설정
MySQL에서는 특정 사용자가 사용할 수 있는 쿼리 개수, 연결 시간, CPU 사용량 등을 제한할 수 있다.
예제 8: 사용자별 리소스 제한 설정
ALTER USER 'testuser'@'localhost' WITH MAX_QUERIES_PER_HOUR 1000 MAX_CONNECTIONS_PER_HOUR 500;
- MAX_QUERIES_PER_HOUR 1000 : 한 시간에 최대 1000개의 쿼리 실행 가능
- MAX_CONNECTIONS_PER_HOUR 500 : 한 시간에 최대 500번 연결 가능
7. ALTER USER 사용 시 주의할 점
1. ALTER USER는 기존 계정에만 적용 가능
- 존재하지 않는 사용자에게 ALTER USER 명령어를 실행하면 오류가 발생한다.
- 만약 사용자가 존재하는지 먼저 확인하려면 다음 명령어를 사용할 수 있다.
SELECT User, Host FROM mysql.user WHERE User = 'testuser';
2. 비밀번호 변경 시 강력한 보안 정책 사용
- 비밀번호는 영문 대소문자, 숫자, 특수문자 조합을 사용하여 보안을 강화해야 한다.
- MySQL 8.0에서는 기본적으로 caching_sha2_password 방식이 권장된다.
3. 비밀번호 만료 설정을 사용할 경우 사용자에게 공지 필요
- 비밀번호 만료 설정을 하면, 사용자가 로그인할 때 변경을 요구받으므로 사전에 안내하는 것이 중요하다.
마무리
MySQL의 ALTER USER 명령어는 비밀번호 변경, 계정 잠금 및 해제, 인증 방식 변경, 리소스 제한 설정 등 다양한 기능을 제공한다.
특히 데이터베이스 보안을 강화하고, 사용자 계정을 효과적으로 관리하는 데 필수적인 명령어다.
사용자 계정을 변경할 때는 반드시 현재 설정을 확인하고, 비밀번호 정책과 보안 규칙을 준수하는 것이 중요하다.
공식 가이드 문서
MySQL ALTER USER 공식 문서:
https://dev.mysql.com/doc/refman/8.0/en/alter-user.html
'DB' 카테고리의 다른 글
[MySQL] FLUSH PRIVILEGES 완벽 가이드 사용법(캐시 갱신) (0) | 2025.04.02 |
---|---|
[MySQL] SHOW GRANTS 완벽 가이드 사용법(사용자 권한 확인) (0) | 2025.04.02 |
[MySQL] SET PASSWORD 완벽 가이드 사용법(비밀번호 변경) (0) | 2025.04.02 |
[MySQL] RENAME 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 |
[MySQL] SET DEFAULT ROLE 완벽 가이드 사용법(사용자 권한 관리) (0) | 2025.02.20 |