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

작성자 없음

작성자 정보가 삭제된 글입니다.

재고시스템으로 알아보는 동시성이슈 해결방법

Docker restart시 spring boot 연동이 안됩니다.

작성

·

131

·

수정됨

0

igwangmin@igwangmin-ui-MacBookPro ~ % docker ps -a                                                               
CONTAINER ID   IMAGE     COMMAND                   CREATED        STATUS                    PORTS     NAMES
8550a9a141fd   mysql     "docker-entrypoint.s…"   15 hours ago   Exited (0) 11 hours ago             mysql
igwangmin@igwangmin-ui-MacBookPro ~ % docker container restart 8550a9a141fdaee67b6f7c586a24085c98a9b99512cb7a8901f0c23cf9082536
8550a9a141fdaee67b6f7c586a24085c98a9b99512cb7a8901f0c23cf9082536
igwangmin@igwangmin-ui-MacBookPro ~ % docker ps   
CONTAINER ID   IMAGE     COMMAND                   CREATED        STATUS         PORTS                               NAMES
8550a9a141fd   mysql     "docker-entrypoint.s…"   15 hours ago   Up 4 minutes   0.0.0.0:3306->3306/tcp, 33060/tcp   mysql

Docker restart를 한 후 Spring을 가동했을 때 아래와 같은 오류가 발생합니다.

 

2024-04-21 09:25:02.485  INFO 1378 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2024-04-21 09:25:03.641 ERROR 1378 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initialization.

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.29.jar:8.0.29]
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.29.jar:8.0.29]
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) ~[mysql-connector-java-8.0.29.jar:8.0.29]
	at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448) ~[mysql-connector-java-8.0.29.jar:8.0.29]
	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) ~[mysql-connector-java-8.0.29.jar:8.0.29]
	

 

기존에 알려주신 방법인 아래와 같은 터미널 창에서 입력후 재실행하였으나 똑같은 오류가 발생해 혹시 다른 방법이 존재할까요

igwangmin@igwangmin-ui-MacBookPro Mikor % docker exec -it mysql bash                                               
bash-4.4# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.3.0 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use stock_example;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| stock_example      |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use stock_example;
Database changed
mysql> 

 

Spring 버전은 아래와 같고

 

plugins {
    id 'org.springframework.boot' version '2.7.1'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.shop'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
    compileOnly {
       extendsFrom annotationProcessor
    }
}

도커 버전은 아래와 같습니다.

 

igwangmin@igwangmin-ui-MacBookPro ~ % docker version                                                                           
Client: Docker Engine - Community
 Version:           26.0.0
 API version:       1.44 (downgraded from 1.45)
 Go version:        go1.22.1
 Git commit:        2ae903e86c
 Built:             Wed Mar 20 15:10:03 2024
 OS/Arch:           darwin/arm64
 Context:           desktop-linux

Server: Docker Desktop 4.28.0 (139021)
 Engine:
  Version:          25.0.3
  API version:      1.44 (minimum version 1.24)
  Go version:       go1.21.6
  Git commit:       f417435
  Built:            Tue Feb  6 21:14:22 2024
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.6.28
  GitCommit:        ae07eda36dd25f8a1b98dfbf587313b99c0190bb
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 알함님께서 질문하신 “Docker restart시 spring boot 연동이 안됩니다.“와 관련하여 제공해드릴 수 있는 정보를 찾았습니다.

이 질문은 Docker를 재시작한 후 Spring Boot 애플리케이션에서 MySQL 데이터베이스에 접속할 때 발생하는 Access denied for user 'root'@'localhost' 오류와 관련 있습니다. 이 오류는 일반적으로 데이터베이스 사용자 인증 정보 오류로 인해 발생합니다. 오류 메시지에 나타난 것처럼, 제공한 패스워드로 root 사용자로 로그인을 시도했을 때 거부되었다는 것을 의미합니다.

해당 문제를 해결하기 위해 기존 답변 중 비슷한 상황을 다루고 있는 내용을 발견했습니다:

  • Access Denied for user ‘root’@’localhost’ (using password: YES)에서는 MySQL 연결 시 발생하는 접속 거부 문제에 대한 해결책을 다루고 있습니다. 이 문제는 Docker 컨테이너에 설정된 MySQL 데이터베이스의 접속 정보 오류로 인해 발생할 수 있습니다. Docker에서 MySQL을 실행하는 경우, MySQL 데이터베이스 접속 정보(사용자 이름, 비밀번호, 데이터베이스 이름)가 Spring Boot 애플리케이션의 설정(application.properties 혹은 application.yml)과 정확히 일치해야 합니다.

질문자님이 제공한 정보에 기반해서, 문제의 핵심은 Docker 컨테이너 내의 MySQL 데이터베이스 접속 시 사용한 인증 정보와 Spring Boot 애플리케이션의 데이터베이스 연결 설정이 서로 호환되지 않는 것으로 보입니다. 따라서, 다음 사항을 확인해 보시기 바랍니다:
- Spring Boot 애플리케이션의 데이터베이스 연결 설정(application.properties 또는 application.yml 파일)을 확인하여 데이터베이스 URL, 사용자 이름(root), 그리고 비밀번호가 Docker 컨테이너에서 설정한 MySQL 데이터베이스의 인증 정보와 일치하는지 확인하세요.
- MySQL 컨테이너가 정상적으로 실행되고 있고, 포트 매핑 설정이 애플리케이션의 데이터베이스 연결 설정과 일치하는지 확인하세요.

이와 관련된 추가 질문이나 다른 문제가 발생하면, 자세한 상황 설명과 함께 질문해 주세요.

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

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기