Inflearn brand logo image

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

작성자 없음

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

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

프로젝트 초기 설정

DB 설정 문제

작성

·

151

0

안녕하세요 프로젝트 초기 설정을 토비님 강의 진행대로 따라하고 있는 중입니다.
제가 docker 는 잘 몰라서 강의 자료에 있는 Rancher Desktop 을 그냥 설치했구요
서버 구동하기 전에 먼저 켜고 토비님 강의 순서 대로 진행했습니다 compose.yaml 의 내용을 수정하기 전에는 오류없이 잘 되는데 토비님이 작성하신 대로 수정을 해서 서버를 구동하면 계속 오류가 발생하고 있습니다

error2.PNG.webp

 

error.PNG.webp


제 디비에 문제가 있나 싶어서 mysql를 완전 삭제하고 재설치 까지 해서 다시 해봐도 이전과 계속 같은 오류가 발생하는데 ai 를 통해서 해결
해보려고 해도 해결을 못하고 있습니다

혹시 확인해보시고 알려주셨으면 합니다

답변 4

0

기존 pc에 mysql DB가 설치되어있다면, docker-compose.yml 포트를 변경해주세요.

이 후 터미널 환경에 들어가 아래 명령어로 기존 컨테이너를 삭제해 주세요.

 

-- 도커 프로세스 확인 (안보이면 아래 참고)
$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
f13daa6f6b51   mysql:latest   "docker-entrypoint.s…"   21 seconds ago   Up 20 seconds   0.0.0.0:3306->13306/tcp, [::]:3306->3306/tcp   splearn-mysql-1

-- 도커 프로세스 멈추기
$ docker stop splearn-mysql-1
splearn-mysql-1


-- 죽은 프로세스 삭제
$ docker rm -f splearn-mysql-1
splearn-mysql-1

------------------------------------------------------------------------------------

-- # 만약 도커 프로세스 보이지 않을 경우 프로세스 전체 확인
$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED              STATUS                          PORTS     NAMES
baf5f296ec49   mysql:latest   "docker-entrypoint.s…"   About a minute ago   Exited (0) About a minute ago             splearn-mysql-1


-- # 죽은 프로세스 삭제
$ docker rm -f splearn-mysql-1
splearn-mysql-1

 

이 후 인텔리제이 우상단 SplearnApplication stop 버튼 클릭

이 후 인텔리제이 우상단 SplearnApplication start 버튼 클릭

0

저도 같은 문제를 겪었는데, 제가 찾아본 내용은 로컬에서 이미 MySQL이 3306에서 실행중이라 문제가 됐었습니다!
그래서 저는 3307:3306 으로 진행했어요.

0

토비님의 프로필 이미지
토비
지식공유자

안녕하세요.

변경을 하신 뒤에 mysql docker container를 down 시키고 다시 애플리케이션을 시작 해보셨나요? 그래야 compose.yaml의 변경 사항이 반영이 됩니다. 그래도 잘 안 되면 해당 container를 제거하시고 다시 시작해보세요.

터미널에서 하는 게 익숙하지 않으시면 IntelliJ의 docker 뷰에서 하셔도 충분합니다.

그래도 잘 안 되면 알려주세요.

 

0

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

IGOR님께서 Docker Compose를 이용하여 MySQL 서비스를 설정하는 과정에서 발생하는 문제에 대해 질문을 주셨습니다. 제공해주신 로그와 설명을 바탕으로 주요 원인과 해결 방법을 도와드리겠습니다.

문제의 원인

현재 문제는 SQLState 28000 에러, 즉 “사용자 인증 실패”로 보입니다. 이 에러 메세지는 MySQL 서버에 연결을 시도할 때 올바르지 않은 사용자 이름 또는 비밀번호를 사용한 경우 발생합니다. Access denied for user 'spring'@'localhost' 메세지는 ‘spring’ 유저가 방화벽 설정이나 사용 권한 문제로 인해 정상적으로 인증되지 못한 경우를 나타냅니다.

해결책

  1. 환경 변수 확인: compose.yml 파일에서 설정한 환경 변수를 다시 확인해 보세요. 특히 MYSQL_USER, MYSQL_PASSWORD, MYSQL_ROOT_PASSWORD의 값이 MySQL에 설정된 값과 일치하는지 확인이 필요합니다. 인용해 주신 구성에서 MYSQL_USERspring으로, 그리고 MYSQL_PASSWORDsecret으로 설정되었습니다. 해당 사용자와 비밀번호가 MySQL 내에서도 정확한지 확인해 보세요.

  2. 유저 권한 설정 확인: MySQL에 제대로 연결하기 위해 해당 사용자가 권한이 부여되어 있는지 확인하세요. 터미널에서 다음과 같은 명령어를 통해서 사용자의 권한을 확인할 수 있습니다:

    $ mysql -uroot -p
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'spring'@'%' IDENTIFIED BY 'secret';
    mysql> FLUSH PRIVILEGES;
    
  3. Docker Compose 컨테이너 초기화: 데이터베이스 설정이 올바르게 초기화되지 않았을 수 있습니다. 다음 명령어를 사용하여 기존 컨테이너와 네트워크를 삭제하고 재구성해 보길 바랍니다.

    $ docker-compose down
    $ docker-compose up --build
    
  4. MySQL 로그 확인: 모든 조치 후에도 오류가 발생한다면, MySQL의 로그를 살펴보는 것도 도움이 될 수 있습니다. 다양한 원인들이 로그에 상세히 기록될 수 있습니다.

    $ docker logs <container_id>
    

참고 자료

문의하신 내용에 대해 비슷한 사례를 다룬 강의나 자료를 충분히 조사해보지 못한 경우, 송구스럽게도 이 이상 구체적인 답변을 드리긴 어렵습니다. 잘 해결되지 않을 경우 해당 질문을 강사님께 다시 문의하시는 것도 방법이 될 수 있습니다.

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

작성자 없음

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

질문하기