MYSQL 패스워드 지정시
Your password does not satisfy the current policy requirements
1. mysql이 버전up 되면서 패스워드 정책이 새로 생성되었다. 기본 패스워드 정책 규칙을 지켜야 패스워드 제대로 구성이 된다
그럼 간단하게 테스트를 진행에 앞서 현재 mysql의 패스워드 정책이 어떻게 되어 있는지 확인해 보자
1 2 3 4 5 6 7 8 9 10 11 12 |
mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | 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 | +--------------------------------------+--------+ 6 rows in set (0.00 sec) |
2. 현재 서버상의 mysql 패스워드 정책은 MEDIUM으로 설정되어 있다 그럼 MEDIUM의 설정은 어떤 규칙을 지켜야 하는지
살펴 보자
MYSQL 공식 홈페이지에서 validate_password_policy 에 대해서 간략하게 설명이 되어 있다
참고 : https://dev.mysql.com/doc/refman/5.6/en/validate-password-plugin.html
1 2 3 4 |
Policy Tests Performed 0 or LOW Length 1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters 2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file |
다시 내용을 요약하자면
1 2 3 |
validate_password_policy=LOW (기본 8자 이상) validate_password_policy=MEDIUM ( 기본8자이상,숫자,소문자,대문자,특수문자를 포함) validate_password_policy=MEDIUM ( 기본8자이상,숫자,소문자,대문자,특수문자,사전단어 포함) |
패스워드 LOW 지정시 ( validate_password_policy=LOW)
3.그럼 패스워드 정책을 변경하면서 패스워드를 변경해 보자
먼저 LOW로 설정을 하고 진행 설정은 vi /etc/my.cnf 이용하자
1 2 3 4 5 6 7 8 9 10 |
[root@localhost ~]# vi /etc/my.cnf [mysqld] ##Password Policy validate_password_policy=LOW #validate_password_policy=MEDIUM [root@localhost ~]# /etc/rc.d/init.d/mysqld restart mysqld 를 정지 중: [ OK ] mysqld (을)를 시작 중: [ OK ] |
mysql 접속 후 현재 패스워드 정책 확인 그리고 패스워드 지정 테스트
실제 테스트를 해보면 8자리 이상 숫자,문자 상관없이 지정되면 패스워드가 지정이 된다 / 그러나 8자리 이하로 할 경우
패스워드 정책에 따라 패스워드 변경이 되지 않는다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
[root@localhost ~]# mysql -u root -p mysql Enter password: Server version: 5.7.9 MySQL Community Server (GPL) mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Value | +--------------------------------------+-------+ | 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 | +--------------------------------------+-------+ 6 rows in set (0.00 sec) mysql> UPDATE user SET authentication_string=PASSWORD('1234') WHERE User = 'root'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements mysql> UPDATE user SET authentication_string=PASSWORD('12345678') WHERE User = 'root'; Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1 mysql> UPDATE user SET authentication_string=PASSWORD('abcdefgh') WHERE User = 'root'; Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1 |
패스워드 MEDIUM 지정시 ( validate_password_policy=MEDIUM)
4. 패스워드 정책을 validate_password_policy=MEDIUM 변경 후 다시 동일하게 작업을 진행
1 2 3 4 5 6 7 8 9 10 |
[root@localhost ~]# vi /etc/my.cnf [mysqld] ##Password Policy #validate_password_policy=LOW validate_password_policy=MEDIUM [root@localhost ~]# /etc/rc.d/init.d/mysqld restart mysqld 를 정지 중: [ OK ] mysqld (을)를 시작 중: [ OK ] |
mysql 접속 후 현재 패스워드 정책 확인 그리고 패스워드 지정 테스트
실제 테스트를 해보면 8자리 이상 숫자,문자 상관없이 지정되면 패스워드가 지정이 된다 / 그러나 8자리 이하로 할 경우
패스워드 정책에 따라 패스워드 변경이 되지 않는다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
localhost ~]# mysql -u root -p mysql Enter password: Server version: 5.7.9 MySQL Community Server (GPL) mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Value | +--------------------------------------+-------+ | 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 | +--------------------------------------+-------+ 6 rows in set (0.00 sec) mysql> UPDATE user SET authentication_string=PASSWORD('12345678') WHERE User = 'root'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements mysql> UPDATE user SET authentication_string=PASSWORD('123456!@#$') WHERE User = 'root'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements mysql> UPDATE user SET authentication_string=PASSWORD('W123456!@#$') WHERE User = 'root'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements mysql> UPDATE user SET authentication_string=PASSWORD('Qw123456!@#$') WHERE User = 'root'; Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1 |
즉 MEDIUM 정책을 가게되면 8자리 이상, 숫자,소문자,대문자,특수문자 를 모두 포함해야 패스워드가 변경된것을 확인 할수 있다
STRONG단계는 테스트해보지 않았다, 사전파일 데입이라는데.. 여기까지 패스워드 정책을 설정하지는 않을 것 같아서