[Docker + MySQL] DBeaver에서 Access Denied 문제 해결기

2025. 2. 16. 22:30·Infra & Messaging
목차
  1. 문제 상황
  2. 원인 1
  3. 원인 2
  4. 해결 방법 1
  5. 해결 방법 2
  6. 🧩 마무리하며
반응형

 

 

 

문제 상황

도커로 MySQL을 실행하기 위해서 비밀번호를 1108로 설정하고 호스트 포트와 컨테이너 포트를 연결해서 RUN을 해준 상황이다.

docker ps로 실행 중인 컨테이너를 확인해 보니 c64 MySQL 컨테이너가 정상적으로 실행 중이다.

 

 

실행 중인 해당 컨테이너에 접속해보았다.

환경변수 MYSQL_ROOT_PASSWORD를 확인해 보니 RUN에서 지정해 준 1108로 세팅되어 있음을 확인했다.

 

 

그러나 dbeaver에서 해당 MySQL컨테이너에 연결하려고 하니

패스워드가 틀려서 Access denied가 된 것으로 보이는 상황이 발생했다.

 

 

혹시나 해서 기존 로컬 MySQL에서 사용하던 비밀번호를 입력하니 연결이 된다.

 

따라서 두 가지 경우의 수를 의심해보았다.

 

 

 

 

원인 1

이전에 도커에서 MySQL을 실행한 적이 있다.

그때의 비밀번호가 캐싱되어서 혹은 이미 저장된 비밀번호가 있으니 새로운 비밀번호로 연결하지 않을 수 있겠다.

 

 

 

원인 2

도커로 실행한 MySQL 서버로 연결이 안 되고, 기존 로컬의 MySQL 서버로 연결이 되는 포트 충돌이 있을 수 있다.

둘 다 3306 포트이기 때문이다.

 

 

 

 

해결 방법 1

 

가정 1(이전에 다른 비밀번호가 저장됨)에 대한 해결책을 세워 보자.

 

도커 컨테이너를 확인해 보면 이전에 사용하던 MySQL 컨테이너가 남아있다.

중지된 모든 컨테이너를 삭제한다.

 

현재 실행 중인 컨테이너가 남아있다. 중지시키고 삭제한다.

 

도커 볼륨을 확인해 보니 많은 게 남아있다.

 

도커 볼륨을 전부 삭제해 준다.

docker volume prune는 사용하지 않는 익명 볼륨만 삭제한다.

 

삭제가 되지 않은 이름이 지정된 볼륨이 남아있다.

해당 볼륨을 참조하는 컨테이너가 있거나, docker-composer 파일 등에서 명시적으로 관리되고 있었기 때문이다.

 

 

개별적으로 이름이 지정된 볼륨도 삭제해 준다.

 

다시 MySQL을 실행해 보고 볼륨이 하나 생성된 것을 확인한다.

이제 다시 연결해 보자.

결과는?

 

 

 

 

 

실패다. 두 번째 문제 원인에 대한 해결법으로 넘어가 보자.

 

 

 

 

 

해결 방법 2

 

가정 2에 대한 해결책을 세워 보자.

 

내 로컬에서는 MySQL서버가 이미 실행 중이다.

해당 커맨드는 OS마다 상이하다. 

필자는 MAC M2 환경에서 진행했다.

 

 

 

Docker 컨테이너 실행 시 다른 포트를 매핑(예: -p 3307:3306) 한 후, DBeaver에서도 포트를 해당 포트(예: 3307)로 변경한다.

 

 

 

이렇게 설정하면 Docker MySQL 컨테이너에 DBeaver로 정상적으로 연결할 수 있다.

 

 

 

🧩 마무리하며

  이번 문제는 단순한 비밀번호 오류처럼 보였지만, 실제로는 볼륨의 잔재, 포트 충돌까지 원인이 다양할 수 있는 문제였다.

 

 실제 실무나 테스트 환경에서 같은 포트를 사용하는 로컬 서비스와 Docker 서비스가 충돌하는 경우는 자주 발생한다.
이럴 땐, 명확한 포트 매핑과 컨테이너/볼륨 상태 점검을 통해 하나씩 원인을 좁혀가는 것이 핵심일 것이다.

복잡한 문제일수록 기본부터 의심하자.
어떤 서비스가 돌아가고 있는지, 포트는 어디에 연결돼 있는지, 진짜 그 컨테이너에 접근하고 있는 게 맞는지를 확인하자.

 

  이번 경험은 Docker 기반 개발 환경을 보다 안정적으로 구성하는 데 좋은 학습이 되었고, 향후 비슷한 문제가 발생했을 때 훨씬 빠르게 대처할 수 있을 것 같다.

 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Infra & Messaging' 카테고리의 다른 글

불필요한 에러 로그는 이제 그만 – Docker Compose 환경에서 의존성을 보장하는 법  (0) 2025.03.31
슬랙(Slack) 봇이 배포 알람을 보내도록 만들어보자.  (0) 2025.02.20
카프카(Kafka) 서버를 구축해보자  (0) 2024.07.05
효율적인 Docker 빌드: 캐시를 활용한 속도 개선  (0) 2024.06.27
  1. 문제 상황
  2. 원인 1
  3. 원인 2
  4. 해결 방법 1
  5. 해결 방법 2
  6. 🧩 마무리하며
'Infra & Messaging' 카테고리의 다른 글
  • 불필요한 에러 로그는 이제 그만 – Docker Compose 환경에서 의존성을 보장하는 법
  • 슬랙(Slack) 봇이 배포 알람을 보내도록 만들어보자.
  • 카프카(Kafka) 서버를 구축해보자
  • 효율적인 Docker 빌드: 캐시를 활용한 속도 개선
Giken
Giken
𝐒𝐲𝐬𝐭𝐞𝐦.𝐨𝐮𝐭.𝐩𝐫𝐢𝐧𝐭𝐥𝐧("𝐇𝐞𝐥𝐥𝐨 𝐖𝐨𝐫𝐥𝐝!");
  • Giken
    개발자 기켄
    Giken
  • 전체
    오늘
    어제
    • 분류 전체보기 (149)
      • Spring (10)
      • Infra & Messaging (5)
      • Database (6)
        • SQL (5)
      • Vibe Coding(with AI) (1)
      • FrontEnd (3)
      • Algorithm (74)
        • 백준 (71)
        • 프로그래머스 (0)
      • Programming Language (33)
        • C (3)
        • C++ (2)
        • Java (19)
        • PHP (7)
      • 프로젝트 (2)
      • EtcTech (9)
      • 낙서 (5)
  • 블로그 메뉴

    • GitHub
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    윤년
    9498
    백준
    DB
    SQL고득점키트
    2588
    평년
    프로그래머스
    C
    2753
    SQL
    1330
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Giken
[Docker + MySQL] DBeaver에서 Access Denied 문제 해결기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.