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

박유찬님의 프로필 이미지
박유찬

작성한 질문수

스프링 도커 데이터베이스 연결 오류

작성

·

71

0

현재 이것이 백엔드 개발이다 with 자바편 책을 보면서 학습중입니다.

스프링부트에 도커에서 실행되는 데이터베이스(mysql)를 연동하려고 하는데

위와 같은 에러가 발생합니다.

스프링부트 pom.xml 내용 중 mysql 의존성 부분

application.properties 부분

도커 컨테이너 생성에서 mysql 버전
Application.java

 

책에서 나온 내용과 동일하게 진행했으며 스키마, 데이터베이스 테이블까지 만든 상태입니다. 어떤 것이 잘못된 건지 감이 잡히지 않습니다. 도움 부탁드려요

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

에러 메시지와 스택 트레이스에 따르면, Unable to load authentication plugin 'auth_gssapi_client' 오류는 MySQL 데이터베이스에 연결하려고 할 때 인증 플러그인 auth_gssapi_client를 로드할 수 없음을 나타냅니다. 이런 유형의 오류는 일반적으로 JDBC 드라이버와 MySQL 서버 간의 호환성 문제 때문에 발생할 수 있습니다.

사용하신 MySQL 커넥터 버전은 8.0.29로, 에러 메시지와 관련이 있을 수 있습니다. auth_gssapi_client는 MySQL 8에서 사용되는 인증 방식 중 하나이며, 이것이 원인일 가능성이 높습니다. MySQL 서버 버전과 클라이언트 라이브러리(JDBC 드라이버)의 호환성을 확인하는 것이 중요합니다.

또한, application.properties에서 데이터베이스 연결 설정을 정의할 때 사용한 설정 값들을 검토하는 것이 좋겠습니다. 주어진 설정에서는 다음과 같습니다:
- spring.datasource.url=jdbc:mysql://localhost:3306/product_management
- spring.datasource.username=root
- spring.datasource.password=hanbit
- spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

여기서 설정은 올바르게 보이지만, MySQL 8.x 사용 시 spring.datasource.url에 명시적으로 인증 방식을 설정하는 옵션을 추가할 수 있습니다. 예를 들어, 다음과 같이 사용자 인증 방식을 지정할 수 있습니다:

spring.datasource.url=jdbc:mysql://localhost:3306/product_management?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&authPlugins=com.mysql.cj.authentication.MysqlNativePasswordPlugin

이렇게 설정하면 MysqlNativePasswordPlugin을 사용하여 로그인할 수 있으며, auth_gssapi_client 관련 문제를 우회할 수 있습니다.

또한 사용하고 계신 MySQL 컨테이너의 버전도 확인하시는 것이 좋겠습니다. 도커 컨테이너 생성에서 사용된 MySQL 버전도 8.0.29로 호환성에 문제가 없어야 하나, 설정에 따라 문제가 발생할 수도 있습니다.

이러한 변경 후에도 문제가 해결되지 않는 경우, 데이터베이스 사용자 생성 시 사용된 인증 방식과 JDBC URL에 명시된 인증 방식이 일치하는지 확인해 보세요. MySQL 서버에서 사용자를 생성할 때 사용한 인증 플러그인과 연결을 시도할 때 사용된 인증 플러그인이 일치해야 합니다.

마지막으로, MySQL 서버 로그와 스프링 부트 애플리케이션 로그를 추가로 확인하여 더 구체적인 오류 메시지나 경고를 찾아보는 것도 도움이 될 수 있습니다.

박유찬님의 프로필 이미지
박유찬

작성한 질문수

질문하기