본문 바로가기
푸닥거리

ERROR 2059 (HY000)

by ┌(  ̄∇ ̄)┘™ 2022. 4. 16.
728x90

MySQL 8.x 서버에 구버전 클라이언트나 라이브러리로 접속하려 할 때 이런 오류를 만납니다.

ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: ... cannot open shared object file: No such file or directory

원인 — 기본 인증 방식 변경

MySQL 8.0부터 기본 인증 플러그인이 caching_sha2_password로 바뀌었습니다(이전에는 mysql_native_password). 보안이 강화된 방식이지만, 이 플러그인을 지원하지 않는 구버전 클라이언트(구형 PHP PDO, 오래된 커넥터 등)는 인증을 처리하지 못해 위 오류가 납니다.

해결 방법

① 서버 기본 인증 방식을 되돌리기 — my.cnf(또는 my.ini)의 [mysqld] 섹션에 다음을 추가하고 MySQL을 재시작합니다.

[mysqld]
default-authentication-plugin=mysql_native_password

② 특정 사용자만 변경하기 — 서버 전체를 바꾸지 않고, 문제되는 계정만 native 방식으로 바꿉니다(더 권장).

ALTER USER 'username'@'host'
  IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;

참고

  • 가능하면 클라이언트/커넥터를 최신 버전으로 업그레이드하는 것이 근본 해결입니다. caching_sha2_password가 더 안전하기 때문입니다.
  • MySQL 8.4부터는 mysql_native_password가 기본 비활성화되고, 9.0에서 완전히 제거됩니다. 위 우회책은 임시방편이며 장기적으로는 클라이언트를 맞추는 방향으로 가야 합니다.
  • 현재 사용자의 인증 방식은 SELECT user, plugin FROM mysql.user;로 확인할 수 있습니다.
728x90

댓글