본문으로 바로가기

 

에러 발생

외부 MySQL 서버에 접속을 시도하였을 때 아래 오류 메시지가 발생할 수 있다.

 

Error Message

ERROR 1251: Client does not support authentication protocol requested by server; consider upgrading MySQL client

 

원인

MySQL 4.1 버전부터 PASSWORD() 함수가 변경되었다.

SELECT PASSWORD('암호') 쿼리가 출력하는 실행 결과가 버전에 따라 각각 다르다.

 

문제는 기존에 서버 간에 (또는 서버-클라이언트 간) 접속 허용 설정을 아래와 같은 GRANT 문으로 하였을 것이고,

 

mysql> GRANT ALL PRIVILEGES ON dbname.* TO username@'A서버ip' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;

 

이는 mysql.user 테이블을 대상으로 하는데, 그 중에서도 암호는 password 칼럼이다.

 

처리

서버 간의 버전 차이 문제를 해결하기 위해 OLD_PASSWORD() 함수가 있다.

접속을 시도하는 클라이언트 계정이 4.1 이전 버전의 암호화 알고리즘을 사용한다고 UPDATE 해 주면 된다.

 

mysql> UPDATE user SET password=OLD_PASSWORD('password') WHERE ...(생략)...;
mysql> FLUSH PRIVILEGES;