728x90

MySQL이 새로 업로드 된후에 패스워드 정책이 변경됬다.

그걸 모르고 사용하다보니 아래와 같이 에러가 뜬다.

 

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

 

패스워드 정책에 어긋났다는 이야기 이다.

그럼 패스워드 정책이 무엇인가?

아래의 명령어를 따라 쳐보자.

 

 

 

SHOW VARIABLES LIKE 'validate_password%'

 

패스워드에 관한 정책들이 보인다.

제일 위의 validate_password_check_user_name은 패스워드에 user id가 들어갔는지 묻는것이다.

필자의 경우 아이디와 패스워드가 모두 root인데 만약 on이 켜져있다면 이는 불가능하다.

length는 당연히 길이를 의미한다. 8자 이상이어야 한다는 이야기이다.

mixed case count는 대소문자를 적어도 1회이상은 써야한다는 것이다.

밑의 nuber count도 숫자를 적어도 1회 이상은 써야한다는 것이다.

마지막의 special char count는 특수문자를 적어도 1회 이상은 써야한다는 것이다.

 

여기서 policy정책이 medium으로 되어있다.

이 medium은 위의 정책들이 활성화 되어있음을 의미한다.

만약 위 정책을 끄고싶다면 이 파라메터가 low가 되어있어야한다.

단 low로 해도 자릿수는 지켜야한다. 즉 8자리 이상으로 해야한다는 의미.

여기서 정책을 변경하는 명령어는 아래와 같다.

 

 

SET GLOBAL validate_password_policy=LOW; <- MEDIUM으로 변경도 가능

 

위의 방법으로 패스워드 정책을 변경가능하다.

만약 길이 까지 바꾸고싶다면 위를 비슷하게 응용하면 된다.

 

 

SET GLOBAL validate_password_length = <원하는 길이>;

 

이제 테스트를 해보자. 테스트는 위의 예시처럼 password 함수를 쓰면된다.

 

select password('<테스트할 패스워드>');

 

보다시피 에러가 나지 않는것을 확인할 수 있다.

 

하지만 위 변경방법은 임시방편이라고 할 수있다.

꺼져도 유지가 되긴하는데 문제는 서비스를 재시작하면 위 조건이 꺼진다는 것이다.

물론 비밀번호는 강하면 좋기에 켜놓으면 좋지만 테스트를 계속해서 하는 와중이라면 이는 귀찮은 작업이다.

다시 말하지만 릴리즈 할거라면옵션을 켜놓고 잠시켜놓고 쓰는게 바람직하다.

그러나 테스트를 할거라면 서비스가 재시작되도 설정이 유지되게 설정파일을 바꿔주는게 낫다.

 

my.cnf(my.ini)에 들어가서 아래처럼 validate_opassword_policy를 LOW로 수정하라

만약 없다면 그냥 만들어서 LOW로 지정하라.

 

[client]

default-character-set=utf8

 

[mysqld]

character-set-server=utf8

basedir=C:\\tools\\mysql\\current

datadir=C:\\ProgramData\\MySQL\\data

 

##password Policy

validate_password_policy=LOW

validate_password_length=4

 

 

이제는 서비스의 재시작 여부와 상관없이 무조건 적용되는걸 확인할 수 있다.

 

+ Recent posts