Mysql The server quit without updating PID file 에러 해결하기
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이 데이터를 저장하는 디렉토리나 파일에 접근할 수 있는 권한이 없을 때 문제가 발생할 수 있다.
- 남아 있는 프로세스: 이전에 실행된 MySQL 프로세스가 제대로 종료되지 않고 남아 있어 새로운 프로세스가 시작되지 않을 수 있다.
- 설정 파일 오류: MySQL 설정 파일이 잘못되었거나 충돌을 일으킬 수 있다.
- 데이터베이스 파일 손상: MySQL 데이터 파일이 손상되면 서버가 시작되지 않을 수 있다.
이 문제를 해결하기 위해 여러 가지 방법을 시도해봤다. 그 과정에서 내가 실행한 명령어들과 각 명령어가 수행하는 역할을 정리해보았다.
설치된 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이 정상적으로 작동하므로, 앞으로는 유사한 문제에 대해 빠르게 대응할 수 있을 것 같다.