MySQL SET PASSWORD 명령어 상세 가이드
MySQL에서 사용자의 비밀번호를 변경하는 가장 기본적인 방법은 SET PASSWORD 명령어를 사용하는 것이다.
데이터베이스 보안 강화를 위해 정기적으로 비밀번호를 변경해야 하며, 특히 루트(root) 계정이나 중요 계정은 더욱 신중하게 관리해야 한다.

1. SET PASSWORD 명령어란?
SET PASSWORD 명령어는 MySQL 사용자 계정의 비밀번호를 변경하는 데 사용된다.
이 명령어를 사용하면 특정 사용자 계정의 비밀번호를 업데이트할 수 있으며,
관리자는 보안 정책에 따라 주기적인 비밀번호 변경을 강제할 수도 있다.
기본 구문
SET PASSWORD FOR '사용자'@'호스트' = PASSWORD('새비밀번호');
- '사용자'@'호스트' : 비밀번호를 변경할 대상 사용자
- PASSWORD('새비밀번호') : 입력한 비밀번호를 MySQL 내부에서 해싱 처리하여 저장
2. 기본적인 비밀번호 변경 방법
예제 1: 현재 로그인한 사용자의 비밀번호 변경
SET PASSWORD = PASSWORD('MyNewPass123!');
위 명령어를 실행하면 현재 로그인된 사용자의 비밀번호가 MyNewPass123! 로 변경된다.
현재 로그인된 계정만 변경되므로, 다른 사용자의 비밀번호를 변경하려면 추가적인 권한이 필요하다.
예제 2: 특정 사용자의 비밀번호 변경
SET PASSWORD FOR 'testuser'@'localhost' = PASSWORD('SecureP@ss2024');
이 명령어를 실행하면 testuser@localhost 사용자의 비밀번호가 SecureP@ss2024 로 변경된다.
주의: 이 명령어를 실행하려면 root 계정 또는 적절한 권한을 가진 계정이 필요하다.
예제 3: 원격 접속 사용자의 비밀번호 변경
SET PASSWORD FOR 'dbadmin'@'%' = PASSWORD('RemotePass#456');
'%' 기호는 모든 원격 호스트에서 접속할 수 있는 사용자를 의미한다.
위 명령어를 실행하면 dbadmin 계정이 원격에서도 RemotePass#456 비밀번호로 로그인할 수 있다.
3. MySQL 8.0에서 비밀번호 변경 방식
MySQL 8.0에서는 PASSWORD() 함수가 제거되었으며,
대신 '비밀번호'를 직접 입력하거나 ALTER USER 명령어를 사용해야 한다.
MySQL 8.0에서 비밀번호 변경하는 방법
ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'NewPass@2024';
- ALTER USER 명령어는 MySQL 8.0에서 권장되는 방식
- 기존의 SET PASSWORD ... PASSWORD() 방식은 지원되지 않음
MySQL 8.0 이상을 사용하고 있다면,
SET PASSWORD FOR '사용자'@'호스트' = '비밀번호'; 형식으로 변경해야 한다.
예제 4: MySQL 8.0에서 SET PASSWORD 사용
SET PASSWORD FOR 'admin'@'localhost' = 'StrongP@ss999';
위 방식으로 간단하게 비밀번호를 변경할 수 있다.
4. 비밀번호 강제 변경 정책 설정하기
MySQL에서는 보안 강화를 위해 비밀번호 만료 기간을 설정할 수 있다.
이렇게 하면 일정 기간이 지나면 강제로 비밀번호를 변경해야 한다.
예제 5: 모든 사용자의 비밀번호 만료시키기
ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE;
위 명령어를 실행하면 testuser 계정은 다음 로그인 시 비밀번호를 변경해야만 로그인 가능하다.
예제 6: 비밀번호 만료 기간 설정 (90일 후 만료)
ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
이제 90일이 지나면 비밀번호 변경이 강제됨.
이러한 설정을 적용하면 보안성이 높은 데이터베이스 환경을 유지할 수 있다.
5. 비밀번호 강도 정책 적용하기
비밀번호 강도를 높이려면 validate_password 플러그인을 활성화하고 설정을 조정할 수 있다.
예제 7: 비밀번호 강도 정책 확인
SHOW VARIABLES LIKE 'validate_password%';
위 명령어를 실행하면 현재 적용된 비밀번호 강도 정책을 확인할 수 있다.
예제 8: 비밀번호 최소 길이 설정 (최소 12자)
SET GLOBAL validate_password.length = 12;
이제 비밀번호는 최소 12자 이상이어야 한다.
예제 9: 비밀번호 복잡성 높이기
SET GLOBAL validate_password.policy = STRONG;
STRONG 모드에서는 대문자, 숫자, 특수문자 포함된 비밀번호만 허용된다.
6. MySQL 5.7과 8.0의 차이점
기능 | MySQL 5.7 | MySQL 8.0 |
비밀번호 변경 방식 | SET PASSWORD + PASSWORD() | SET PASSWORD 또는 ALTER USER |
비밀번호 강제 만료 | 가능 | 가능 |
validate_password 기본값 | MEDIUM | STRONG |
직접 해싱 저장 | 지원 | 지원 안 함 |
MySQL 8.0에서는 PASSWORD() 함수가 제거되었으므로,
ALTER USER 또는 SET PASSWORD 를 사용하여 비밀번호를 변경해야 한다.
7. 실무에서 SET PASSWORD 활용하기
실전 예제 10: 모든 사용자의 비밀번호 강제로 변경하기
관리자가 모든 계정의 비밀번호를 강제 변경해야 할 경우
SELECT CONCAT('SET PASSWORD FOR ''', user, '''@''', host, ''' = ''NewPass2024'';')
FROM mysql.user;
이 명령어는 모든 사용자의 비밀번호를 일괄 변경하는 SQL 스크립트를 생성한다.
이를 실행하면 모든 계정이 새로운 비밀번호를 사용해야 함.
실전 예제 11: 특정 사용자 계정 비밀번호 재설정
관리자가 특정 계정의 비밀번호를 리셋하여 초기값으로 변경하는 경우
SET PASSWORD FOR 'support'@'localhost' = 'DefaultP@ssword!';
이제 사용자는 기본 비밀번호로 로그인한 후,
필요하면 직접 비밀번호를 변경할 수 있다.
마무리
MySQL의 SET PASSWORD 명령어는 사용자의 비밀번호를 변경하는 중요한 명령어이다.
특히 보안 정책을 준수하고, 정기적으로 비밀번호를 변경하는 것이 중요하다.
MySQL 8.0부터는 PASSWORD() 함수가 제거되었으므로,
ALTER USER 또는 새로운 SET PASSWORD 형식을 사용해야 한다.
공식 가이드 문서
MySQL SET PASSWORD 공식 문서:
https://dev.mysql.com/doc/refman/8.0/en/set-password.html
'DB' 카테고리의 다른 글
[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] RENAME USER 완벽 가이드 사용법(사용자 계정명 변경) (0) | 2025.04.01 |
[MySQL] ALTER USER 완벽 가이드 사용법(사용자 계정 변경) (0) | 2025.04.01 |
[MySQL] DROP USER 완벽 가이드 사용법(사용자 계정 삭제) (0) | 2025.04.01 |
[MySQL] CREATE USER 완벽 가이드 사용법(사용자 생성) (0) | 2025.02.24 |