MySQL 8.0 이상의 버전을 사용할 경우 위와 같이 caching_sha2_password authentication plugin 문제로 접속이 안되는 경우가 있다.

원인

터미널로 직접 접속은 가능하지만 외부 접속이나 sql client 접속이 안되는 경우이다. mysql의 기본 인증 플러그인은 mysql_native_password였는데, 8.0 이후로 caching_sha2_password로 바뀐 듯하다. 따라서 caching_sha2_password 플러그인을 사용하라는 것이다.

하지만 caching_sha2_password 플러그인을 사용하려면

  1. SSL 보안연결
  2. RSA 보안을 적용한 비암호 연결

둘 중 하나를 사용해야 한다.

해결 방법.

위의 두가지 방법을 사용해도 되지만 이 글에서는 소개하는 것은 위의 방법 말고 이전과 같이 접속하는 방법이다. 이게 가장 쉽다. 방법은 cashing_sha2_password로 되어있는 인증 방식을 이전의 mysql_native_password로 바꾸면 된다.

이미 생성된 유저

ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';

기본 설정으로 바꾸기

my.dnf 파일에서 아래처럼 설정한다.

[mysqld]

default_authentication_plugin=mysql_native_password

저장 후 mysql 재시동.

이는 다음에 계속 만든 유저 또한 mysql_native_password 플러그인을 사용할 수 있도록 기본값으로 설정하는 것이다. 다만 이미 만들어진 유저는 적용이 안되고, mysql 재시동 후에 새로 만든 유저에만 적용된다.