강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

포포뇨님의 프로필 이미지
포포뇨

작성한 질문수

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

2-4. 프로젝트 기본 설정하기 & 로컬 모니터링 인프라 설정

bootRun 실행 문제

해결된 질문

작성

·

113

0

1. 현재 학습 진도

  • 몇 챕터/몇 강을 수강 중이신가요?

     

    -> 2-4 설정 부분 듣고 있습니다!

 

2. 어려움을 겪는 부분

  • 어느 부분에서 막히셨나요?

-> 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 애플리케이션) 간의 인증 방식 불일치로 인해 발생합니다. 여기 몇 가지 해결책을 제시해드리겠습니다.

문제 원인

  • MySQL의 인증 방식: MySQL 8.0 이상에서는 기본 인증 플러그인이 caching_sha2_password로 변경되었습니다. 하지만 JDBC 드라이버 또는 설정에 따라 mysql_native_password 방식이 요구될 때가 있어 충돌이 발생할 수 있습니다.

해결 방법

  1. MySQL 사용자 인증 방식 변경:

    • MySQL 사용자 계정의 인증 방식을 mysql_native_password로 변경할 수 있습니다.
    ALTER USER 'yourUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourPassword';
    
  2. JDBC URL 수정:

    • JDBC URL 에 useSSLallowPublicKeyRetrieval 속성을 추가하여 연결 문제를 해결할 수 있습니다.
    • 예시: jdbc:mysql://localhost:3306/yourDatabase?useSSL=false&allowPublicKeyRetrieval=true
  3. JDBC 드라이버 업그레이드:

    • 사용 중인 JDBC 드라이버 버전을 확인하고, 최신 버전으로 업그레이드하여 호환성 문제를 해결할 수도 있습니다. 최신 드라이버는 MySQL의 최신 기능과 변경사항을 더 잘 지원합니다.

참고 자료

이 방법들이 도움이 되길 바라며, 추가적으로 문제 해결에 어려움을 겪으신다면 추가적인 정보를 제공해주시면 좀 더 구체적인 지원을 드릴 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

포포뇨님의 프로필 이미지
포포뇨

작성한 질문수

질문하기