MYSQL, Client does not support authentication protocol requested by server 에러 해결

MYSQL에서 Client does not support authentication protocol requested by server; consider upgrading MySQL client 오류가 발생하는 이유는 클라이언트가 서버에서 요청한 인증 프로토콜을 지원하지 않기 때문입니다. 이 문제의 해결 방법을 알아보겠습니다.

해결 방법

먼저 현재 사용 중인 서버의 인증 플러그인을 확인하기 위해 mysql에서 아래의 쿼리를 실행합니다.

USE mysql;
SELECT Host,User,plugin FROM user;

 

아마 plugin 컬럼 값이 caching_sha2_password일 것입니다. 이 플러그인을 클라이언트에서 처리해주지 못해서 에러가 발생하는 것입니다.

 

1. 클라이언트 업그레이드

최신 버전의 mysql 클라이언트를 설치하면 됩니다. 여기서 클라이언트란 WAS에서 사용하는 mysql-connector를 의미합니다. 예를 들어 자바 애플리케이션이면 현재 기준 최신 버전인 mysql-connector-java-8.0.32.jar를 WAS의 lib 경로에 교체해서 사용합니다.

 

2. 서버 인증 플러그인 변경

클라이언트를 업그레이드 할 수 없거나 문제가 지속되면 서버 인증 플러그인을 변경하는 방법을 고려할 수 있습니다. mysql 서버에서 mysql_native_password 플러그인을 사용하도록 사용자 암호를 변경합니다.

 

아래의 쿼리문으로 플러그인을 mysql_native_password로 변경할 수 있습니다.

ALTER USER 'your_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;

 

예시)

mysql>  ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123!@#';

플러그인 변경 후에 다시 시도하면 에러가 발생하지 않을 겁니다.

MYSQL 클라이언트-서버란?

mysql은 클라이언트-서버 아키텍처로 구성되어 있습니다. 우선 서버는 흔히 mysql에서 쿼리를 실행하고, db를 관리할 때 사용하는 프로세스를 말합니다.

 

mysql 클라이언트는 사용자나 응용 프로그램이 mysql 서버와 통신하는 데 사용하는 도구입니다. 일반적으로 mysql 클라이언트는 라이브러리 또는 드라이버입니다. 예를 들어, java로 만든 애플리케이션에서 mysql 서버와 통신하려면 mysql-connector-java-x.x.x.jar이라는 라이브러리를 설치해서 사용합니다.

 

또는 리눅스 배포판에서 mysql에 직접 접근해서 사용하는 것 역시 클라이언트라고 볼 수 있습니다. 예를 들어, 커맨드라인에서 mysql -u root -p 명령어로 mysql에 접속하고 원하는 쿼리를 실행할 수 있습니다.

반응형

댓글

Designed by JB FACTORY