Projects/[Spring] Coffee Shop Project

트러블슈팅 : MySQL Access Denied 오류 해결하기

montmer27 2026. 4. 2. 21:50

상황

Spring Boot 애플리케이션을 IntelliJ에서 직접 실행했을 때 아래 오류가 발생하며 기동에 실패했다.

Caused by: java.sql.SQLException: Access denied for user 'root'@'192.168.65.1' (using password: YES)

docker-compose.yml에 MYSQL_USER와 MYSQL_PASSWORD를 추가하여 별도 유저를 생성했음에도 오류가 해결되지 않았다.


원인 분석

오류 메시지를 보면 root 계정으로 접속 시도가 이루어지고 있었다. docker-compose.yml에서 DB_USERNAME을 gigacoffee로 설정했음에도 root로 접속한 이유는 IntelliJ가 .env 파일을 자동으로 읽지 않기 때문이다.

docker-compose는 실행 시 같은 디렉토리의 .env 파일을 자동으로 읽어 환경변수를 주입한다. 반면 IntelliJ의 Run Configuration은 .env 파일을 자동으로 읽지 않는다.

따라서 DB_USERNAME 환경변수가 주입되지 않은 상태로 앱이 실행되었고, application.yml에 설정된 기본값인 root로 폴백하여 접속을 시도한 것이다.

username: ${DB_USERNAME:root}  # DB_USERNAME이 없으면 root로 폴백

해결 방법

IntelliJ Run Configuration에 환경변수를 직접 등록한다.

Run → Edit Configurations → Environment variables 항목에 아래 값을 추가한다.

  • DB_USERNAME=gigacoffee
  • DB_PASSWORD=(db 비밀번호)
  • JWT_SECRET=(jwt secret key)

결과

환경변수 등록 후 재기동 시 gigacoffee 유저로 정상 접속되며 애플리케이션이 기동됐다.


인사이트

docker-compose와 IntelliJ는 환경변수를 읽는 방식이 다르다.
docker-compose는 .env 파일을 자동으로 참조하지만, IntelliJ Run Configuration은 별도로 환경변수를 등록해야 한다.
로컬 개발 환경에서 인프라는 docker-compose로, 앱은 IDE에서 직접 실행하는 구성을 사용할 때는 이 차이를 반드시 인지해야 한다.