MySQL 8.4 암호 정책과 로그인 잠금 설정 점검하기

목차

MySQL 8.4에서 암호 검증과 계정별 로그인 실패 잠금을 점검하는 방법입니다. 서버 공통 정책과 사용자별 속성을 구분합니다. 운영 계정에 바로 적용하면 연결 풀·배치·비상 접속에 영향이 있으므로 서비스의 비밀 갱신 절차와 함께 검토합니다.

정책 기능 확인

validate_password 구성 요소가 설치되어 있는지 먼저 확인합니다. 변수가 없으면 값만 설정해서 기능을 켤 수 없습니다. 사용하는 에디션과 구성 요소 설치 방법을 확인합니다.

TERMINAL / CONFIG
SELECT component_urn FROM mysql.component;
SHOW GLOBAL VARIABLES LIKE 'validate_password%';
SHOW GLOBAL VARIABLES LIKE 'password_history';
SHOW GLOBAL VARIABLES LIKE 'password_reuse_interval';

암호 복잡도 설정

아래는 구성 요소가 준비된 서버의 예시입니다. 수치는 조직 정책에 맞춰 결정하며 SET PERSIST는 재시작 후에도 유지하는 설정입니다. 정책을 올렸다고 기존 암호가 모두 자동 변경되는 것은 아닙니다.

TERMINAL / CONFIG
SET PERSIST validate_password.length=12;
SET PERSIST validate_password.policy='MEDIUM';
SET PERSIST validate_password.number_count=1;
SET PERSIST validate_password.mixed_case_count=1;
SET PERSIST validate_password.special_char_count=1;

사용자별 실패 잠금과 만료

예시는 localhost의 lieper 계정입니다. 5회 실패 시 3일 잠금과 90일 만료를 설정합니다. 자동화 계정은 암호 만료 시 서비스가 중단될 수 있으므로 갱신·예외·복구 방법을 함께 정합니다.

TERMINAL / CONFIG
ALTER USER 'lieper'@'localhost' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 3;
ALTER USER 'lieper'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
SHOW CREATE USER 'lieper'@'localhost';
-- 장애 원인을 확인하고 잠금 해제가 필요한 경우
ALTER USER 'lieper'@'localhost' ACCOUNT UNLOCK;

잠금과 실패 통계를 제공하는 다른 플러그인의 테이블을 혼동하지 않습니다. 인증 문자열이 비었다는 이유만으로 내장 계정이나 외부 인증 계정을 일괄 삭제하지 않고 인증 플러그인과 사용 목적을 먼저 확인합니다.
참고: https://dev.mysql.com/doc/refman/8.4/en/password-management.html

DB › MySQL
MySQL 목록