왜 SET PASSWORD를 알아야 할까?
MySQL에서 사용자 계정 보안은 시스템 전체의 안정성과 직결됩니다. 비밀번호 관리는 그 출발점이며, SET PASSWORD 문은 이를 수행하는 핵심 명령어입니다. 이 글에서는 MySQL에서 SET PASSWORD를 사용하는 법, 주의할 점, 그리고 MySQL 버전별 변화까지 쉽게 정리해드립니다.
1. SET PASSWORD란?
SET PASSWORD 문은 MySQL 사용자 계정의 비밀번호를 변경하거나 초기화할 때 사용합니다. 비밀번호는 MySQL의 mysql.user 테이블에 저장되며, 이 명령은 안전한 인증 체계를 유지하는 데 필수입니다.
기본 구문:
SET PASSWORD FOR 'user1'@'localhost' = '새로운비밀번호';
MySQL 5.7 이상부터는 비밀번호를 평문으로 직접 지정할 수 없고, PASSWORD() 함수도 더 이상 권장되지 않습니다. 대신, MySQL 8.0에서는 IDENTIFIED BY 절을 사용하는 것이 일반적입니다.
2. MySQL 버전별 구문 차이
- MySQL 5.6 이하:
SET PASSWORD FOR 'user1'@'localhost' = PASSWORD('mysecurepass');
- MySQL 5.7: PASSWORD() 함수는 더 이상 권장되지 않으며, ALTER USER 또는 SET PASSWORD 사용 권장.
- MySQL 8.0 이상:
ALTER USER 'user1'@'localhost' IDENTIFIED BY 'mysecurepass';
또는
SET PASSWORD FOR 'user1'@'localhost' = 'mysecurepass';
단, 비밀번호는 caching_sha2_password 또는 mysql_native_password 등 인증 플러그인 설정에 따라 암호화됩니다.
3. 사용자 자신의 비밀번호 변경하기
현재 로그인한 사용자가 자신의 비밀번호를 바꾸고 싶다면 FOR 절 없이도 가능합니다:
SET PASSWORD = '새비밀번호';
이는 CURRENT_USER()에 해당하는 계정의 비밀번호를 갱신합니다.
4. 보안 팁과 주의사항
- 비밀번호 변경은 가능하면 SSL 접속 환경에서 수행하세요.
- 비밀번호는 8자 이상, 숫자+문자+특수문자 조합이 좋습니다.
- FLUSH PRIVILEGES는 필요하지 않습니다. SET PASSWORD는 즉시 적용됩니다.
- root 권한이 있어야 다른 사용자의 비밀번호를 변경할 수 있습니다.
결론 및 실무 팁
SET PASSWORD 문은 간단하지만, MySQL 사용자 보안을 유지하는 데 필수적인 도구입니다. MySQL 8.0 이후로 인증 방식이 변화하며 ALTER USER 구문도 같이 활용되므로 상황에 맞게 선택적으로 사용하는 것이 중요합니다.
실무 팁:
- 정기적으로 비밀번호를 변경하는 보안 정책을 수립하세요.
- 사용자 별로 인증 플러그인을 명확히 설정해두세요.
- 자동화된 스크립트에서는 비밀번호를 환경 변수나 Vault 등에 안전하게 저장하세요.
공식 문서 링크
'SQL > MYSQL' 카테고리의 다른 글
[MySQL] DROP RESOURCE GROUP 문: 불필요한 리소스 그룹 안전하게 삭제하기 (0) | 2025.06.15 |
---|---|
[MySQL] CREATE RESOURCE GROUP 문 가이드: 리소스 최적화를 위한 시작점 (0) | 2025.06.15 |
[MySQL] ALTER RESOURCE GROUP 문 완벽 가이드: 리소스 제어의 핵심 기능 (1) | 2025.06.14 |
[MySQL] SET ROLE 문 완벽 이해: 동적 권한 제어의 핵심 기능 (0) | 2025.06.14 |
[MySQL] SET DEFAULT ROLE 문 완전 정복: 사용자 권한 관리의 핵심 (0) | 2025.06.13 |
[MySQL] REVOKE 사용 방법 및 예시 (0) | 2025.03.31 |
[MySQL] Index Condition Pushdown 사용 방법 및 예시 (0) | 2025.03.19 |
[MySQL] RENAME USER 사용 방법 및 예시 (0) | 2025.03.19 |