Dev./Error.

[Error] Docker MySQL 세팅 시 3306 포트 오류 해결방법

limitation01 2025. 11. 25. 09:16

왜 3306 포트 오류가 나올까?

도커 MySQL과 로컬 MySQL이 둘 다 3306 포트를 사용하려고 해서 충돌하기 때문이다.

도커는 포트를 실제 OS에서 공유함. 즉, “가상환경”이라도 포트는 절대 가상화되지 않는다

대표 오류 메세지

Ports are not available: listen tcp 0.0.0.0:3306: bind: address already in use
  • 3306 이미 누가 쓰고 있어서 도커가 못 씀

해결 방법 

1. 3306 점유 프로세스 확인

lsof -i :3306

문제가 있는 경우

mysqld   1234  ...
com.docke 5678 ...

mysqld (로컬 MySQL) 포트 때문에 충돌이 난다.

2. 로컬 MySQL 중지

brew services stop mysql

 

맥은 macOS의 기능 중 하나인 launchd 서비스가 자동 실행중일 수도 있다.

launchctl list | grep -i mysql
launchctl remove homebrew.mxcl.mysql@8.0

자동 실행을 멈춰준다.

프로세스 강제 종료가 필요하다면

sudo pkill mysqld
sudo pkill mysql

3. 포트 점유 완전히 풀렸는지 재확인

lsof -i :3306

docker-proxy / com.docker.backend만 남아있어야 성공이다. 

배운 점

 

  • Docker와 로컬 MySQL 둘 다 3306을 원하면 충돌한다.
  • Docker 세팅을 잘못 한 것이 아니라, 로컬 포트 충돌로 실행 불가한 것이다.
  • 팀 프로젝트에서는 로컬 MySQL을 끄고 Docker만 사용해야 환경이 통일된다