inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

비전공자도 이해할 수 있는 Docker 입문/실전

컨테이너로 실행시킨 Spring Boot가 MySQL에 연결이 안 되는 이유

failed to connect to mysql

154

wsim

작성한 질문수 6

0

gradlew build 이후

compose up 했을 때

mysql만 올라오고 spring boot서버는 안올라오는 상황입니다.

gui db로 접속하려고 하니 밑의 그림과 같이 뜹니다.

image.png

제가 직접 컨테이너에 접근하여 접속한 결과

image.png

다음과 같이 똑같은 id,pw로 로그인이 되는데

왜 gui환경에서만 로그인이 안되는 걸까요?

  1. root계정으로 접속 후 저 계정에 대한 비밀번호를 변경해보았습니다.

  2. root계정 접속 후 저 계정에 대한 모든 권한을 부여하였습니다.

차이점

application.yml파일에서 username: root로 실행하면

스프링부트도 잘 올라오는데 username:xoxoxmin1268

이런식으로 제 아이디를 넣으면 다음과 같은 로그 뜹니다.

image.pngimage.png

 

docker docker-compose docker-volume docker-image container ecr

답변 2

0

JSCODE 박재성

안녕하세요 wsim님! 질문 잘 주셨어요ㅎㅎㅎ

혹시 강의 실습을 그대로 따라하셨는데도 작동을 안 하시는 상태이실까요?

그리고 작성하신 compose 파일의 코드도 같이 첨부해서 보여주시기 바랍니다!

1

wsim

안녕하세요.
이것저것 해보다가 아무래도 MySQL쪽에 문제가 있는 것 같아서 아에 컴퓨터를 포맷시켰습니다. 지금 다시 해보고 안되면 말씀드리겠습니다!

1

wsim

아무래도 mysql workbench문제인것같네요
이 부분은 제가 해결해보겠습니다

감사합니다!

1

JSCODE 박재성

네 알겠습니다!!

해결 시도해보시다가 또 막히시면 질문 한 번 남겨주세요~~~

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. wsim님 질문 주셔서 감사합니다.

현재 문제는 GUI 툴에서 MySQL에 접속할 때 발생하는 Access denied for user 오류입니다. 일반적으로 이 문제는 사용자 권한이나 설정 사항이 일치하지 않을 때 발생합니다. 아래에 몇 가지 점검할 사항과 해결방법을 안내드리겠습니다.

  1. 사용자 권한 설정:

    • 직접 MySQL에 접속하여 해당 사용자(xoxoxmin1268)에 대한 권한을 한 번 더 검토 해보시기 바랍니다. 모든 권한이 부여되었는지 확인하십시오. 만약 설정이 제대로 되어 있지 않다면 다음 명령어를 사용하여 권한을 부여해보세요:
      
      GRANT ALL PRIVILEGES ON *.* TO 'xoxoxmin1268'@'%';
      FLUSH PRIVILEGES;
      

    • 이때, @'%'는 모든 호스트로부터의 접근을 허용하겠다는 의미입니다.
  2. User와 Host 확인:

    • MySQL은 사용자가 로그인하려는 호스트와 일치하는지 비교합니다. 따라서 GUI에서 접속할 때와 CLI에서 접속할 때 사용한 hostnameusername을 다시 한 번 확인하셔야 합니다.
    • 보안 상의 이유로 MySQL은 localhost(내부)와 외부 IP에 대해 별개의 권한을 가질 수 있습니다.
  3. 로그인 정보 점검:

    • GUI 툴(MySQL Workbench)에서 사용하시는 login 정보가 CLI에서 사용되는 것과 동일한지 재확인하시기 바랍니다.
  4. Spring Boot 설정:

    • application.yml 파일에서 지정한 사용자명이 문제가 될 수 있습니다. xoxoxmin1268 사용자를 통해서 실행할 때만 문제가 발생하는지, 해당 사용자가 실제로 MySQL에 접속할 수 있도록 모든 설정이 되어 있는지를 체크해보세요.

관련 유사 질문도 체크해보시면 도움이 될 수 있습니다:
- Access denied for user ‘root’@‘localhost’ (using password: YES) - 이 답변에서는 데이터베이스 사용자와 권한을 재설정하는 방법을 설명합니다.

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

EC2 터미널에서 docker pull

0

64

2

AWS ECR

0

58

2

FROM openjdk:17-jdk 현재 기준 dockerhub에 없습니다

1

100

2

Redis 볼륨 설정?

0

117

2

컨테이너의 IP

0

80

2

도커 이미지를 만들 때 application.yml

0

105

2

compose.yml 관리

0

88

2

ECR 리포지토리에 이미지가 3개가 보입니다.

0

77

2

액세스 키 등록하는 시점 관련 질문이 있습니다.

0

83

1

depends_on에 따른 컨테이너 실행 순서

0

76

2

실제 웹 서비스 배포 시 질문

0

80

2

도커 volume 질문

0

67

3

HTTPS로도 받고 싶으면 docker compose에 443도 쓰면 될까요?

0

73

2

sql 볼륨 폴더 지우면 데이터베이스 데이터 날라가는거 아닌가요?

0

73

2

39강 도커파일 빌드 경로 질문이 있습니다.

0

70

2

도커파일 copy

0

70

2

실무에서 docker compose up --build를 할 때

0

186

2

mysql_data 폴더 내부에 다른 파일이 있는데도 잘 되는 경우

0

85

2

도커 허브에서 postgres 버전 확인하는 법

0

127

2

보충 자료와도 관련된 추가 내용

1

82

1

현업에서 MySQL은 RDS와 도커 볼륨 중 어떤 걸 사용하나요?

0

110

2

노션 자료에 안 보이는 이미지가 있습니다

0

101

1

도커 허브에서의 latest가 가장 최신인 게 맞나요?

0

121

2

docker image ls 실행 시 나오는 내용이 다릅니다

0

87

2