19'C 흐림
서울 강남구
자신의 접속 계정에 대한 패스워드를 변경하려면 어떻게 해야 할까요?
방법3) 에 이야기 하기 위해서 포스팅을 작성했습니다.
SET PASSWORD 를 하게 되면 plain text password 를 적어야 하고, mysql.user 에 명시된 authentication plugin (mysql_native_password) 를 이용해서 암호화한 후에 저장 합니다.
이 때 보안상 문제의 소지가 있을 수 있습니다.
방법1) 이 깔끔한 듯 보이지만 문제가 발생할 수 있습니다.
만약 누군가 과거에 UPDATE mysql.user 를 했었고 flush 하지 않은 상황이라면..
내가 변경한 것과 과거에 누군가가 변경 시도했던 것이 모두 반영되어서 서비스에 문제가 발생할 수 있습니다.
mysqld start 시 옵션에 --log-raw 옵션을 사용했다면
plain text password 가 .mysql_history 파일에 그대로 노출되는 경우가 생길 수 있습니다.
SET PASSWORD 는 mysql.user 에 대해서 UPDATE 권한만 있으면 누구나 실행 가능합니다.
사용법을 보면 [FOR user@host] 를 줘서 다른 USER 에 대해서도 패스워드를 변경할 수 있기 때문에 UPDATE 권한만 있다면 악의적인 목적으로 패스워드를 변경할 가능성이 있습니다.
SET PASSWORD 사용법
https://dev.mysql.com/doc/refman/5.7/en/set-password.html