https://github.com/TheOne-team-1/TheOne-Bottle-Shop
GitHub - TheOne-team-1/TheOne-Bottle-Shop: 주류 커머스 플랫폼 백엔드 구현하기
주류 커머스 플랫폼 백엔드 구현하기. Contribute to TheOne-team-1/TheOne-Bottle-Shop development by creating an account on GitHub.
github.com
MySQL 연동 및 인증 방식 호환성 문제 해결
1. 문제 상황 (Problem)
현상: Spring Boot 애플리케이션 기동 시 BeanCreationException 발생 및 DB 연결 실패.
에러 로그 핵심 키워드:
Communications link failure (네트워크 연결 거부)
Plugin 'mysql_native_password' is not loaded (인증 플러그인 미로드)
2. 원인 분석 (Root Cause)
분석 결과, 두 가지 복합적인 원인이 발견
환경 변수 설정 오류: .env 파일 내에서 변수를 참조할 때 사용한 # 기호가 주석으로 처리되어 DB 계정 정보가 애플리케이션에 정상적으로 전달되지 않음.
MySQL 8.0+ 인증 방식 변경: MySQL 최신 버전은 보안 강화를 위해 caching_sha2_password를 기본 인증 방식으로 사용하나, 클라이언트 드라이버나 특정 설정에서는 이전 방식인 mysql_native_password를 요구하며 충돌 발생.
3. 해결 과정 (Action)
단계 1: 환경 설정 최적화
.env.dev 파일에서 모호한 변수 참조(주석 기호 사용)를 제거하고, 명확한 값으로 하드코딩하거나 올바른 변수 할당 형식을 사용하여 데이터 무결성을 확보함.
결과: localhost:3306으로의 네트워크 통신 성공.
단계 2: DB 사용자 인증 방식 변경
네트워크 연결 성공 후 발생한 인증 플러그인 에러를 해결하기 위해 MySQL 서버에 직접 접속하여 해당 사용자의 인증 방식을 현재 서버 환경에 맞게 조정함.
해결 쿼리:
SQL
ALTER USER 'theonedev'@'%' IDENTIFIED WITH caching_sha2_password BY '12345678';
FLUSH PRIVILEGES;
결과: Spring Boot의 HikariCP가 커넥션 풀을 정상적으로 생성하며 애플리케이션 기동 완료.
4. 결과 및 배운 점 (Retrospective)
환경 변수 관리의 중요성: .env 파일 작성 시 주석 기호(#)나 공백이 파싱 과정에서 예상치 못한 오류를 만들 수 있음을 인지함.
DB 보안 정책 변화 이해: MySQL 버전 업그레이드에 따른 인증 메커니즘(SHA-2 기반)의 변화를 학습하고, 서버와 클라이언트 간의 핸드셰이크 과정을 깊이 있게 이해하는 계기가 됨.
로깅 기반 트러블슈팅: 에러 로그의 하단(Caused by)부터 추적하여 네트워크 문제와 인증 문제를 단계적으로 분리해 해결하는 체계적 접근법을 실천함.
[한줄 요약]
"Docker 환경에서 MySQL 8.0 연동 시 발생하는 환경 변수 파싱 오류와 인증 플러그인 호환성 문제를 로그 기반의 단계적 추적을 통해 해결하며, 인프라 설정 및 DB 보안 메커니즘에 대한 실무적 이해도를 높였다."
'spring_2기[본캠프] > 과제' 카테고리의 다른 글
| [과제] Spring 플러스 프로젝트 Day 6 (0) | 2026.03.17 |
|---|---|
| [과제] Spring 플러스 프로젝트 Day 5 (0) | 2026.03.16 |
| [과제] Spring 플러스 프로젝트 Day 3 (0) | 2026.03.11 |
| [과제] Standard Spring Task 6 (0) | 2026.03.08 |
| [과제] Spring 플러스 프로젝트 Day 2 (1) | 2026.03.06 |