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
'푸닥거리' 카테고리의 다른 글
| PBL(Problem/Project Based Learning)의 이해 (0) | 2022.04.19 |
|---|---|
| PHP Fatal error: Call to undefined function utf8_encode() (0) | 2022.04.17 |
| 웹사이트에서 사용된 기술을 식별하는 크롬 확장팩 (0) | 2022.04.15 |
| SQLSTATE[HY000] [2002] Permission denied (0) | 2022.04.15 |
| svnversion (0) | 2022.04.15 |
댓글