MySQL 8 암호 정책(Password policy) 확인 및 수정하기
개요
MySQL 이 8로 업그레이드되면서 패스워드 정책이 더 깐깐해졌습니다.
DBMS 이니 보안에 더 충실해진 면도 있고 어떻게 보면 예전 버전들이 너무 보안에 신경 안 쓴 부분도 꽤 있다고 생각합니다.
운영 시스템이라면 이런 철저한 암호 정책을 따라야 겠지만 로컬이나 개발 환경에서는 이런 정책을 다 따르기 어려운 부분이 있습니다.
변경된 암호 정책
5.7 이전까지 버전은 암호 정책을 낮추려면 다음 설정을 mysql 설정 파일에 추가하고 재구동하면 됐습니다.
validate_password_policy=LOW default_password_lifetime=0
8 에서는 저 옵션이 안 먹어서 SHOW VARIABLES LIKE 'validate_password% 로 확인해 보니 아래와 같이 validate_password 뒤에 _ 문자가 . 으로 변경이 되었습니다. 즉 validate_password_policy 는 validate_password.policy 로 바뀌줘야 합니다.
아마 설정을 더 체계적으로 관리하기 위해 도입한 방법인 것 같은데 default_password_lifetime 는 그대로 입니다.
MySQL 8
mysql> SHOW VARIABLES LIKE 'validate_password.%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | MEDIUM | | validate_password.special_char_count | 1 | +--------------------------------------+--------+
8.0 에서 qwert123 같은 암호를 사용하려면 다음 내용을 mysql 설정 파일에 넣어주고 재구동하면 됩니다.
RHEL/CentOS
echo 'validate_password.policy=LOW' | sudo tee -a /etc/my.cnf echo 'default_password_lifetime=0' | sudo tee -a /etc/my.cnf
Ubuntu
echo 'validate_password.policy=LOW' | sudo tee -a /etc/mysql/mysql.conf.d/mysqld.cnf echo 'default_password_lifetime=0' | sudo tee -a /etc/mysql/mysql.conf.d/mysqld.cnf
추가로 암호 자릿수 제한, 특수 문자 포함 여부, 대소문자 구분, 숫자 포함 여부를 모두 끄려면 아래 내용을 추가해 주고 재구동해주면 됩니다.
RHEL/CentOS
echo 'validate_password.length=6' | sudo tee -a /etc/my.cnf echo 'validate_password.special_char_count=0' | sudo tee -a /etc/my.cnf echo 'validate_password.mixed_case_count=0' | sudo tee -a /etc/my.cnf echo 'validate_password.number_count=0' | sudo tee -a /etc/my.cnf
Ubuntu
echo 'validate_password.length=6' | sudo tee -a /etc/mysql/mysql.conf.d/mysqld.cnf echo 'validate_password.special_char_count=0' | sudo tee -a /etc/mysql/mysql.conf.d/mysqld.cnf echo 'validate_password.mixed_case_count=0' | sudo tee -a /etc/mysql/mysql.conf.d/mysqld.cnf echo 'validate_password.number_count=0' | sudo tee -a /etc/mysql/mysql.conf.d/mysqld.cnf
같이 보기
- MySQL [2054] 에러 해결 - MySQL 8 인증 정책(Authentication policy) 수정하기
- RHEL/CentOS 에 MySQL 8 설치하기
- WSL 2 Ubuntu 20 에 MySQL 8 설치
- RHEL/CentOS, Ubuntu 에 MySQL 5.6, 5.7 설치하기