MySQL에서 사용자 비밀번호를 변경하거나 초기화하는 방법은 여러 가지가 있다.
특히, 관리자가 사용자의 비밀번호를 재설정해야 할 때 유용한 명령어가 바로 RESET PASSWORD이다.

1. RESET PASSWORD란?
RESET PASSWORD는 MySQL 사용자 계정의 비밀번호를 변경할 때 사용하는 명령어다.
MySQL 5.7부터 RESET PASSWORD 사용법이 변경되었으며, MySQL 8.0 이상에서는 추가적인 보안 정책이 적용된다.
따라서, 버전에 따라 적절한 방법을 선택해야 한다.
RESET PASSWORD 기본 구문
RESET PASSWORD FOR '사용자명'@'호스트' = '새로운_비밀번호';
- 특정 사용자('사용자명'@'호스트')의 비밀번호를 새로운 값으로 변경한다.
- 이 명령어는 MySQL 8.0 이상에서 사용 가능하다.
- mysql_native_password 또는 caching_sha2_password 인증 플러그인을 사용할 수 있다.
2. MySQL RESET PASSWORD 실행 예제
예제 1: 특정 사용자의 비밀번호 변경
아래 예제에서는 'admin' 사용자의 비밀번호를 변경하는 방법을 보여준다.
ALTER USER 'admin'@'localhost' IDENTIFIED BY 'NewPassword123!';
- ALTER USER를 사용하면 RESET PASSWORD와 동일한 효과를 낼 수 있으며, MySQL 8.0 이상에서 권장되는 방식이다.
- NewPassword123!로 비밀번호가 변경된다.
- localhost에서 로그인하는 admin 사용자에게만 적용된다.
예제 2: RESET PASSWORD를 사용한 변경
MySQL 8.0 이상에서는 다음과 같이 사용할 수도 있다.
RESET PASSWORD FOR 'admin'@'localhost' = 'NewPassword123!';
- RESET PASSWORD는 MySQL의 최신 버전에서 비밀번호를 즉시 변경할 때 사용된다.
- ALTER USER와 유사한 기능을 한다.
예제 3: root 사용자의 비밀번호 변경 (MySQL 8.0 이상)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'RootNewPass!';
- MySQL 최고 권한 계정(root)의 비밀번호를 변경할 때 사용하는 방법이다.
- ALTER USER는 RESET PASSWORD보다 더 자주 사용되며, 최신 MySQL 버전에서 추천되는 방식이다.
3. 비밀번호를 잊어버렸을 때 해결 방법
1) MySQL을 안전 모드로 실행 (비밀번호 없이 접근 가능하도록 설정)
sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables &
- --skip-grant-tables 옵션을 사용하면 MySQL이 인증 없이 실행되므로, root 계정으로 로그인 가능하다.
2) MySQL에 접속 후 비밀번호 변경
mysql -u root
이제 MySQL에 진입한 후, 다음 명령어를 실행한다.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewRootPass!';
- root 계정의 비밀번호가 NewRootPass!로 변경된다.
3) MySQL 다시 시작
sudo systemctl restart mysql
이제 새로운 비밀번호로 로그인하면 된다.
4. MySQL 비밀번호 정책 설정 (강력한 비밀번호 요구사항)
MySQL에서는 보안을 강화하기 위해 **비밀번호 정책(Password Validation Policy)**을 적용할 수 있다.
비밀번호 정책을 설정하면 취약한 비밀번호 사용을 방지할 수 있다.
비밀번호 정책 확인
SHOW VARIABLES LIKE 'validate_password%';
실행 결과 예시:
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.policy | MEDIUM |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------+
- validate_password.policy 값이 MEDIUM 이상이면 비밀번호에 대문자, 숫자, 특수문자가 포함되어야 한다.
- validate_password.length는 비밀번호 최소 길이를 의미한다.
비밀번호 정책 변경
SET GLOBAL validate_password.policy = STRONG;
SET GLOBAL validate_password.length = 12;
- 비밀번호 정책을 STRONG으로 변경하면 더 강력한 비밀번호만 허용된다.
- 이후 비밀번호 변경 시 12자리 이상의 강력한 조합이 필요하다.
5. RESET PASSWORD 사용 시 주의할 점
- MySQL 8.0 이상에서는 ALTER USER를 권장
- ALTER USER 명령어는 최신 MySQL 버전에서 더 안전하게 작동한다.
- RESET PASSWORD는 특정 환경에서만 필요할 수 있다.
- root 계정의 비밀번호 변경 시 신중해야 함
- 비밀번호를 잊어버릴 경우 복구 절차가 필요하므로, 중요한 계정은 비밀번호를 안전한 곳에 저장해야 한다.
- 비밀번호 정책을 확인하고 적용
- MySQL에서 보안 강화를 위해 비밀번호 정책을 설정하는 것이 중요하다.
- 변경 후 MySQL 서비스 재시작 필요할 수도 있음
- 일부 설정은 MySQL을 다시 시작해야 적용된다.
- FLUSH PRIVILEGES; 명령어를 실행하면 변경 사항이 즉시 반영될 수 있다.
6. 마무리
MySQL에서 RESET PASSWORD는 사용자 계정의 비밀번호를 변경하는 핵심적인 명령어 중 하나다.
특히, ALTER USER와 함께 사용하면 더욱 강력하고 유연하게 계정 관리가 가능하다.
비밀번호를 잊어버렸을 경우 복구 방법을 알고 있어야 하며, 보안 정책을 적용하여 강력한 비밀번호를 설정하는 것이 중요하다.
공식 가이드 문서
MySQL RESET PASSWORD 공식 문서:
https://dev.mysql.com/doc/refman/8.0/en/reset-password.html
'DB' 카테고리의 다른 글
[MySQL] SHOW CREATE USER 완벽 가이드 사용법(계정 생성 정보 확인) (0) | 2025.04.02 |
---|---|
[MySQL] SHOW PRIVILEGES 완벽 가이드 사용법(모든 권한 확인) (0) | 2025.04.02 |
[MySQL] UNLOCK TABLES 완벽 가이드 사용법(테이블 잠금 해제) (0) | 2025.04.02 |
[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] RENAME USER 완벽 가이드 사용법(사용자 계정명 변경) (0) | 2025.04.01 |