발생한 오류
Docker 환경에서 mysql 9.1.0을 실행하였는데, DBeaver를 이용하여 연결하였더니
!AuthenticationProvider.BadAuthenticationPlugin! 에러가 발생하며 연결이 되지 않았다.
오류 원인
Docker 컨테이너 내부에 접속해서 user의 plugin을 확인해보면 caching_sha2_password가 적용되어있다.
MySql 8.0 이상은 caching_sha2_password를 기본 인증 플러그인으로 사용하기 때문이다.
하지만 깃허브에서 DBeaver 이슈를 찾아보았을 때 여전히 caching_sha2_password 플러그인이 제대로 지원되지 않아서 여전히 레거시 방식인 mysql_native_password 플러그인으로 변경해서 적용하는 모습을 확인할 수 있었다.
오류 해결
8.x버전에서 가장 간단한 방법은 컨테이너 내부에서 특정 유저의 plugin을 mysql_native_password로 변경하는 것이다. (8.4 버전부터는 my.ini에서 mysql_native_password를 ON으로 변경해주어야한다.)
하지만 9.0 버전부터는 mysql_native_password 플러그인이 완전히 제거되었기 때문에 적용할 수 없으며, 보안상으로도 취약해진다.
https://docs.oracle.com/cd/E17952_01/workbench-en/wb-what-is-new-8.html#wb-what-is-new-8-security
따라서 가장 쉬운 방법은 caching_sha2_password 플러그인을 지원하는 클라이언트를 사용하는 것이다.
MySQL Workbench로 이용해서 접속할 경우 별도의 설정 없이도 바로 연결되는 것을 확인할 수 있다.
따라서 DBeaver에서 작업하고 싶다면, Advanced에서 Local Client를 MySQL Workbench 8.0으로 변경해주면 된다.
'Infra' 카테고리의 다른 글
[Nginx] reverse proxy 환경에서 Mixed-content 해결 (1) | 2024.11.02 |
---|---|
[Docker] Spring-Redis connection refused (feat. RedisConfig) (1) | 2024.11.02 |