Mysql The server quit without updating PID file 에러 해결하기

소요 시간: 5분

MySQL 서버를 실행하려고 했을 때, 예상치 못한 에러 메시지가 나타났다.

"ERROR! The server quit without updating PID file (/usr/local/var/mysql/igeon-ui-MacBookPro.local.pid)."

이 에러는 MySQL 서버가 정상적으로 시작되지 않았다는 뜻이다. **PID (Process ID) 파일**은 MySQL 서버가 실행 중일 때 해당 프로세스를 식별하는 데 사용되는 파일로, 정상적으로 서버가 실행되면 이 파일이 업데이트되어야 한다. 그런데 이 오류가 발생했을 때는 MySQL 서버가 실행되지 않고, PID 파일을 업데이트하지 못했다는 것을 의미한다.

이러한 문제의 원인으로는 여러 가지가 있을 수 있는데, 가장 흔한 이유는 다음과 같다:

이 문제를 해결하기 위해 여러 가지 방법을 시도해봤다. 그 과정에서 내가 실행한 명령어들과 각 명령어가 수행하는 역할을 정리해보았다.


설치된 MySQL을 삭제

먼저 Homebrew를 사용해 설치된 MySQL을 삭제했다. MySQL 서버가 제대로 실행되지 않으면 재설치를 통해 문제를 초기화하는 것이 기본적인 해결책 중 하나다. 재설치하면 잘못된 설정이나 충돌을 피할 수 있기 때문이다.

단, MySQL를 지우면 기존에 있던 테이블과 데이터베이스는 전부 삭제된다. MySQL를 지우기 전에 따로 백업하는 것이 좋다.

$ brew remove mysql

이 명령어는 Homebrew를 통해 설치된 MySQL을 시스템에서 제거한다. MySQL이 시스템에 남아 있는 경우, 기존의 설정 파일이나 디렉토리 등이 문제가 될 수 있기 때문에 이를 삭제하는 것이 중요하다.


불필요한 캐시 파일들을 정리

다음으로 Homebrew에서 관리하는 불필요한 캐시 파일들을 정리했다. 이 명령어는 MySQL과 관련된 남아 있는 찌꺼기 파일들을 제거하여 시스템을 깨끗한 상태로 유지한다. 이 단계는 MySQL을 재설치할 때 새로운 환경을 만들어 주는 데 도움이 된다.

$ brew cleanup


MySQL의 자동 시작 에이전트를 비활성화

다음으로 MySQL의 자동 시작 에이전트를 비활성화했다.

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

launchctl은 macOS에서 서비스나 데몬을 관리하는 도구로, MySQL이 시스템 부팅 시 자동으로 시작되지 않도록 설정을 해제하는 역할을 한다. 이 작업을 통해 불필요한 자동 실행이 문제를 일으키지 않도록 한다.


MySQL의 자동 시작 설정 파일을 완전히 삭제

MySQL의 자동 시작 설정 파일을 완전히 삭제했다.

rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

이 파일은 MySQL이 macOS에서 부팅 시 자동으로 실행되도록 설정하는 데 사용된다. 해당 파일이 존재하면, MySQL 서버가 매번 자동으로 시작되기 때문에 문제가 재발할 수 있다. 이를 제거하는 것이 중요했다.


MySQL의 데이터베이스 디렉토리를 완전히 삭제

MySQL의 데이터베이스 디렉토리를 완전히 삭제했다.

sudo rm -rf /usr/local/var/mysql

/usr/local/var/mysql에는 MySQL 서버와 관련된 설정 파일과 데이터베이스 파일이 포함되어 있다. 기존의 데이터와 설정을 모두 삭제함으로써 MySQL을 새롭게 초기화할 수 있다. 다만 이 명령어는 데이터베이스의 모든 데이터를 삭제하므로, 중요한 데이터가 있을 경우에는 신중하게 사용해야 한다.


MySQL 설치

Homebrew를 사용하여 MySQL을 새로 설치했다. MySQL의 설치는 Homebrew를 통해 최신 버전으로 간편하게 할 수 있다. 기존에 문제가 있었던 설정들을 초기화한 후, 새로운 버전으로 설치하여 오류를 방지할 수 있다.

$ brew install mysql


MySQL 초기화

MySQL을 설치한 후, 초기화 작업을 진행했다.

mysqld --initialize --explicit_defaults_for_timestamp

mysqld --initialize 명령어는 MySQL 데이터베이스를 초기화하여 새로운 데이터 디렉토리 구조를 생성한다. --explicit_defaults_for_timestamp 옵션은 타임스탬프와 관련된 기본값을 명시적으로 처리하는 옵션으로, 시간 관련 오류를 방지하는 데 도움이 된다.


서버 재시작

마지막으로 MySQL 서버를 시작했다.

mysql.server start

이때는 sudo 없이 실행했는데, MySQL 권한 설정이 올바르게 되어 있는 경우 sudo 없이도 MySQL 서버를 시작할 수 있다. 정상적으로 서버가 시작되었고, PID 파일 오류 없이 MySQL이 실행되었다.


문제 해결 후

이 과정을 통해 MySQL 서버가 정상적으로 시작되었다. PID 파일 관련 오류가 해결되었으며, 서버가 정상적으로 실행될 수 있었다.

문제의 원인은 명확하게 알 수는 없었지만, 데이터 디렉토리와 설정 파일을 새롭게 초기화함으로써 기존의 문제를 해결할 수 있었다.

PID 파일 오류가 발생하면 권한 문제나 남아 있는 프로세스를 의심해보는 것이 중요하다. MySQL이 제대로 실행되지 않으면, 재설치를 통해 시스템을 초기화하고, 관련된 설정들을 정리하는 것이 유용하다.

이 문제를 해결한 뒤, MySQL이 정상적으로 작동하므로, 앞으로는 유사한 문제에 대해 빠르게 대응할 수 있을 것 같다.

MySQL 리스트