프로그래머스 데브코스에서는 MariaDB를 사용했지만, 최근 김영한 강사님의 강의를 공부하며 MySQL 환경을 사용해야 하는 상황이 생겼습니다.
MariaDB를 삭제하고 MySQL을 재설치하는 과정에서 3306 포트 충돌로 인해 MySQL이 실행되지 않는 문제가 발생했고, 이를 해결한 과정을 단계별로 정리했습니다.
MariaDB 삭제 후 MySQL을 설치하고 실행했지만, 계속해서 MySQL 서버에 연결되지 않는 오류가 발생했습니다.
오류 내용
Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
MySQL 서버가 실행되지 않고, 소켓 파일(mysql.sock) 역시 생성되지 않는 상태였습니다.
단순 소켓 문제가 아닐 수도 있다고 판단해 MySQL 에러 로그를 확인했습니다.
에러 로그 확인
cat /opt/homebrew/var/mysql/*.err
로그를 확인해보니,
• Port 3306 is already in use
• Can't start server: Bind on TCP/IP port: Address already in use 와 같은 메시지가 포함되어 있었고,이미 삭제했다고 생각했던 MariaDB(mysqld) 데몬이 3306 포트를 점유 중이라는 사실을 알 수 있었습니다.
즉, MySQL이 실행되지 않은 원인은 소켓 자체 문제가 아니라
3306 포트가 MariaDB 프로세스에 의해 점유되어 있었기 때문이었습니다.
먼저 3306 포트를 점유하고 있는 MariaDB 프로세스를 강제로 종료했습니다
kill -9 <PID>
종료 확인:
lsof -i :3306
MariaDB가 완전히 제거되도록 아래 순서로 처리했습니다.
1) 서비스 종료
brew services stop mariadb
2) 패키지 삭제
brew uninstall mariadb
3) 남아 있는 데이터 디렉토리 삭제
rm -rf /opt/homebrew/var/mysql
이 디렉토리가 남아 있으면 MySQL이 소켓 파일을 생성하지 못하고 오류가 반복됩니다.
MySQL 설치
brew install mysql
서버 실행 스크립트로 직접 구동
cd /opt/homebrew/Cellar/mysql/*/support-files
./mysql.server start
이제 MySQL 서버가 정상적으로 실행되며 mysql.sock 파일도 생성되었습니다.
mysql_secure_installation
다음 화면이 뜨면 문제 없이 작동하는 것입니다.
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
이후 안내에 따라 비밀번호와 보안 설정을 완료했습니다.
mysql -u root -p
정상적으로 접속되면 모든 과정이 성공적으로 완료된 것입니다.
이번 문제의 핵심은 삭제된 줄 알았던 MariaDB의 데몬 프로세스가 백그라운드에서 실행 중이며 3306 포트를 차지하고 있었던 점이었습니다.
에러 로그(mysql.err)를 직접 확인한 것이 문제 해결의 실마리가 되었습니다.
같은 환경(M1/M2 + Homebrew)에서 MySQL 환경을 구성하는 분들에게 도움이 되었으면 합니다.