본문 바로가기
Setting

[Docker/ErrorLog] Homebrew MySQL 삭제 후에도 3306 포트가 점유되는 현상

by clolee 2025. 5. 4.

✅ [문제 해결 기록] Homebrew MySQL 삭제 후에도 3306 포트가 점유되는 현상

📌 문제 요약

  • Homebrew로 설치한 MySQL을 brew uninstall mysql로 삭제했음
  • 그런데 lsof -i :3306 또는 docker-compose up 시
    Port 3306 already in use 오류 발생
  • 포트를 사용 중인 프로세스는 mysqld (_mysql 사용자)가 계속 떠 있었음

⚠️ error

Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 127.0.0.1:0: listen tcp 0.0.0.0:3306: bind: address already in use

🔍 원인 분석

원인 항목 설명
🔁 mysqld 자동 재시작 macOS는 MySQL을 launchctl 또는 plist 기반으로 등록하여 자동 재시작
❌ brew uninstall 후에도 설정 파일 남음 Homebrew는 실행 중인 서비스 또는 수동 설치된 launchd 항목까지 제거하지 않음
🧩 .pkg로 설치된 MySQL이 숨어있을 수 있음 Homebrew 외에 예전에 .pkg로 설치한 MySQL이 /usr/local/mysql에 남아있을 수 있음

🛠 해결 방법 (③번으로 해결함)

✅ ① brew services로 완전 중단 시도

brew services list
brew services stop mysql

이후에도 계속 mysqld가 떠 있다면 → 다음 단계로.


✅ ② launchctl 기반으로 자동 실행 중단

sudo launchctl unload -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

또는 확인 후:

launchctl list | grep mysql

→ launchctl bootout 또는 launchctl remove 로 제거


✅ ③ 최종 수단: mysqld 강제 종료

sudo pkill mysqld

→ 포트 확인:

sudo lsof -i :3306

🟢 아무것도 안 나오면 성공

👉 이후 docker-compose up -d 하면 3306 포트를 도커가 점유 가능


✅ 요약

문제 해결방법
Homebrew MySQL 삭제 후에도 3306 점유 mysqld가 자동 실행 중
포트 계속 살아 있음 launchctl, plist, pkill 통해 중단
결국 해결한 방법 ✅ sudo pkill mysqld 로 완전 종료 후 도커 사용 성공

 

댓글