본문 바로가기

개발/PHP, Mysql

MySql 5.7 패스워드 변경 및 사용자 추가 관련 이슈


mysql 5.7 root 패스워드 변경 할때, 또는 사용자 추가시에 달라진 점이 있어서 노트합니다.


기존에 사용자를 추가하는 방법은 포스팅을 했지만 5.7 버전에서는 다른점이 생겨서 추가로 노트를 해야 할 것 같았습니다.


5.7 이전 버전 사용자 추가 포스팅


일단 달라진 점은 이전 버전의 user 테이블에서 password 항목이 사라졌습니다.


기존처럼 


UPDATE mysql.user SET Password=PASSWORD('패스워드') WHERE User='아이디' AND Host='%';
FLUSH PRIVILEGES;


이런식으로 패스워드 변경을 시도하셨다면, 에러문구가 출력이 되실 겁니다


이유는 password 필드명이 authentication_string으로 변경 되었기 때문입니다. 


때문에 5.7 이상의 버전을 사용하신 다면 password 필드명 대신 바뀐 필드명으로 대처해주시면 됩니다.


근데 아마 5.7을 처음 접하게 되셔서 패스워드를 세팅을 하시게 되면 기존 패스워드 방식을 쓰시게 되면 에러 메시지가 출력 되실 겁니다.

(복잡한 패스워드를 쓰시는 분은 해당 에러 문구가 출력이 안되고 정상적으로 패스워드 세팅이 될수 있습니다.)


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


위와 같은 에러 문구가 출력이 되었다면 쿼리문에는 이상은 없지만 패스워드 정책에 맞지 않아서 입니다.


5.7 이상의 mysql에서는 패스워드를 영소문자+영대문자+숫자+특수기호가 포함된 최소 8자리 이상의 패스워드로 설정을 해야


정상적으로 패스워드 설정이 가능합니다. 


하지만 기존 패스워드 규칙을 변경하지 않으면서 5.7 버전을 사용을 하실려고 하신다면


mysql 설정파일의 옵션을 설정해주시면 이전 버전과 동일하게 사용하실 수 있습니다.


my.cnf 파일에 validate-password=off 라고 기입해주고 MySQL을 재시작 해주는 것으로 해결 할 수 있습니다.


이것 때문에 새로 서버세팅하고 패스워드 변경하는데 삽질을 너무 많이해서 노트해봅니다.



P.S 패스워드 설정 보는 쿼리문  mysql> SHOW VARIABLES LIKE 'validate_password%';