본문 바로가기

리눅스

[draft] MySQL의 패스워드 정책을 확인하고 변경하는 방법

MySQL의 패스워드 정책을 확인하고 변경하는 방법

패스워드 정책 확인

MySQL에 로그인

CREATE USER 'zabbix'@'%' IDENTIFIED BY 'ahslxjf11wcd1!';
mysql> CREATE USER 'zabbix'@'%' IDENTIFIED BY 'ahslxjf11wcd1!';
[에러] ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

현재 패스워드 정책을 확인

  • 비밀번호 유효성 검사 플러그인 시스템 변수 확인(MEDIUM)
SHOW VARIABLES LIKE 'validate_password%';
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| 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      |
+--------------------------------------+--------+
7 rows in set (0.01 sec)

패스워드 정책

  • 0: 패스워드 검증 정책 비활성화
  • 1: 낮은 수준의 검증 (길이만 확인)
  • 2: 중간 수준의 검증 (길이, 숫자, 대문자/소문자 포함)
  • 3: 높은 수준의 검증 (길이, 숫자, 대문자/소문자, 특수 문자 포함)
  • 4: 최고 수준의 검증 (길이, 숫자, 대문자/소문자, 특수 문자, 사전에서 사용된 단어 검사)

패스워드 정책 변경

비밀번호 유효성 검사 플러그인 시스템 변수 변경

SET GLOBAL validate_password_policy=LOW;

비밀번호 유효성 검사 플러그인 시스템 변수 확인(LOW)

SHOW VARIABLES LIKE 'validate_password%';

높은 수준의 검증 정책으로 변경하는 예시

SET GLOBAL validate_password.policy = 3;
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 8     |
| validate_password_mixed_case_count   | 1     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.01 sec)
FLUSH PRIVILEGES;

패스워드 변경

CREATE USER 'zabbix'@'%' IDENTIFIED BY 'ahslxjf11wcd1!';
mysql> CREATE USER 'zabbix'@'%' IDENTIFIED BY 'ahslxjf11wcd1!';
Query OK, 0 rows affected (0.00 sec)

MySQL의 패스워드 정책을 my.cnf 파일에서 LOW로 변경하는 방법

MySQL 서버를 정지합니다.

sudo systemctl stop mysql

my.cnf 환경 설정 파일 편집(validate_opassword_policy에서 LOW로 수정)

  • [mysqld] 섹션 내에서 다음 설정을 추가하여 패스워드 정책을 LOW로 설정합니다.
  • validate_password.policy = LOW
vim /etc/my.cnf
[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8

##password Policy
validate_password_policy=LOW
validate_password_length=4

MySQL 서버를 다시 시작합니다.

sudo systemctl start mysql

변경된 패스워드 정책이 적용되었습니다. 새로운 사용자를 생성하거나 기존 사용자의 패스워드를 변경할 때 LOW 정책이 적용됩니다.

 

주의: 패스워드 정책을 LOW로 설정하면 보안에 취약할 수 있습니다. 가능하면 보안을 강화하기 위해 더 강력한 정책을 고려하는 것이 좋습니다.

 

참고URL

- 변군이글루 블로그 : MySQL 패스워드 정책 확인 및 변경하는 방법

- dev.mysql.com : https://dev.mysql.com/doc/refman/5.7/en/validate-password-options-variables.html