MySQL 서버를 시작하려 했을 때, 로그에 다음과 같은 오류 메시지가 출력된다:
[ERROR] [MY-010259] [Server] Another process with pid XXXX is using unix socket file.
[ERROR] [MY-010268] [Server] Unable to setup unix socket lock file.
[ERROR] [MY-010119] [Server] Aborting
이는 MySQL 서버가 기존에 남아 있는 소켓 파일로 인해 새로 시작하지 못한 상황이다. 비정상적으로 종료된 MySQL 프로세스가 소켓 파일을 점유하거나, 소켓 파일이 삭제되지 않은 상태로 남아 있을 때 발생한다.
MySQL이 이미 실행 중인지 확인한다:
ps -aux | grep mysqld
이미 실행 중인 MySQL 프로세스가 확인되면 강제로 종료한다:
sudo kill -9 <PID>
ps -aux | grep mysqld
MySQL이 사용하는 소켓 파일(/var/lib/mysql/mysql.sock
)이 남아 있는지 확인한다.
sudo ls -l /var/lib/mysql/mysql.sock
sudo rm -f /var/lib/mysql/mysql.sock
MySQL이 사용하는 PID 파일(/var/run/mysqld/mysqld.pid
)이 존재하는지 확인한다.
sudo ls -l /var/run/mysqld/mysqld.pid
sudo rm -f /var/run/mysqld/mysqld.pid
충돌 원인을 제거한 후 MySQL 서비스를 다시 시작한다.
sudo systemctl restart mysqld
sudo systemctl status mysqld
MySQL 데이터 디렉토리(/var/lib/mysql
)의 권한이 적절하지 않으면 소켓 파일을 생성하지 못한다.
sudo ls -ld /var/lib/mysql
mysql:mysql
로 설정되지 않았으면 수정한다:sudo chown -R mysql:mysql /var/lib/mysql
MySQL이 사용하는 기본 포트(3306)가 다른 프로세스에 의해 점유 중인지 확인한다.
sudo netstat -tuln | grep 3306
/etc/my.cnf
)에서 포트를 변경한다.MySQL 데이터 디렉토리가 손상되었거나 초기화되지 않은 경우 문제가 지속될 수 있다.
sudo mysqld --initialize --user=mysql
sudo systemctl restart mysqld