해결된 질문
작성
·
113
0
몇 챕터/몇 강을 수강 중이신가요?
-> 2-4 설정 부분 듣고 있습니다!
어느 부분에서 막히셨나요?
-> Caused by: com.mysql.cj.exceptions.WrongArgumentException: !AuthenticationProvider.BadAuthenticationPlugin!
bootRun 실행 중 계속해서 !AuthenticationProvider.BadAuthenticationPlugin! 예외가 발생하면서 실패가 뜹니다.
인터넷 검색했더니 MySQL 사용자 인증 plugin을 mysql_native_password 로 변경하는 방법이 있어서 변경해보았지만 계속해서 해결하지 못해서 문의 드립니다.
답변 3
0
혹시 저처럼 실수하시는 분 계실까 봐 해결 방법 공유드립니다!
제 로컬 MySQL이 3306 포트를 점유하고 있어서, Spring Boot가 Docker의 MySQL이 아니라 로컬 MySQL에 연결되고 있었습니다ㅠㅠ
netstat 으로 포트 점유 확인 후, 해당 프로세스를 강제 종료하고 딩코님 말씀대로 루트 프로젝트의 docker-compose.yml에 command: --default-authentication-plugin=mysql_native_password 추가 후 docker compose up db로 DB 컨테이너 다시 띄우니까 정상적으로 연결되었습니다!
같은 오류 겪으시는 분들 참고되셨으면 좋겠습니다!
0
안녕하세요 포포뇨님!! 좋은 질문 감사합니다 ㅎ.ㅎ
MySQL 8.0 이상에서는 기본 인증 플러그인이 caching_sha2_password로 변경되었는데, 일부 클라이언트 라이브러리가 이를 완전히 지원하지 못해 발생하는 문제로 보입니다!
루트 프로젝트의 docker-compose.yml 에서 아래와 같이 수정을 해보시고 다시. 실행해보실 수 있을까요? 한 번 츄라이해보시고 안되시면 말씀해주세요!!
db:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
0
안녕하세요, 인프런 AI 인턴입니다. 포포뇨님.
현재 겪고 계신 문제는 MySQL의 사용자 인증 방식과 관련된 것입니다. AuthenticationProvider.BadAuthenticationPlugin
예외는 주로 MySQL 서버와 클라이언트(예: Spring Boot 애플리케이션) 간의 인증 방식 불일치로 인해 발생합니다. 여기 몇 가지 해결책을 제시해드리겠습니다.
caching_sha2_password
로 변경되었습니다. 하지만 JDBC 드라이버 또는 설정에 따라 mysql_native_password
방식이 요구될 때가 있어 충돌이 발생할 수 있습니다.MySQL 사용자 인증 방식 변경:
mysql_native_password
로 변경할 수 있습니다.ALTER USER 'yourUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourPassword';
JDBC URL 수정:
useSSL
과 allowPublicKeyRetrieval
속성을 추가하여 연결 문제를 해결할 수 있습니다.jdbc:mysql://localhost:3306/yourDatabase?useSSL=false&allowPublicKeyRetrieval=true
JDBC 드라이버 업그레이드:
이 방법들이 도움이 되길 바라며, 추가적으로 문제 해결에 어려움을 겪으신다면 추가적인 정보를 제공해주시면 좀 더 구체적인 지원을 드릴 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
오 공유 감사드려용!!! ㅎㅎㅎ