MySQL 오류 **"Can't connect to MySQL server on 'localhost' (10061/2003)"**는 클라이언트가 MySQL 서버와 연결을 시도했으나 실패했음을 의미합니다. 이 문제는 서버가 실행되지 않거나 네트워크 또는 설정 문제로 인해 발생합니다. 아래에서 원인과 해결 방법을 상세히 설명합니다.
- MySQL 서버 데몬이 실행되지 않은 상태에서 클라이언트가 연결을 시도하는 경우 발생합니다.
- MySQL 서버가 기본 포트(3306)가 아닌 다른 포트에서 실행 중일 수 있습니다.
- 클라이언트가 잘못된 IP 주소나 호스트명을 사용해 접속을 시도하는 경우에도 발생합니다.
- 서버가 로컬 또는 원격 연결을 허용하지 않는 방화벽이나 보안 그룹 설정으로 인해 접속이 차단됩니다.
- MySQL 서버의 bind-address 설정이 127.0.0.1로 제한되어 있을 때, 로컬 이외의 IP에서 접속 시도 시 발생합니다.
- MySQL이 유닉스 소켓 파일을 사용하는데, 해당 소켓 파일 경로가 잘못되었거나 소켓 파일이 삭제된 경우에도 발생합니다.
- MySQL 서버가 실행 중인지 확인합니다
[ LINUX ]
sudo systemctl status mysql
또는
service mysql status
[ WINDOW]
net start | findstr MySQL
- MySQL 서버가 올바른 포트(기본값: 3306)에서 실행 중인지 확인합니다
netstat -tlnp | grep mysql
- MySQL이 다른 포트에서 실행 중이라면 클라이언트에서 올바른 포트를 명시합니다
mysql -u username -p --host=127.0.0.1 --port=3307
MySQL 포트를 방화벽에서 허용합니다:
[ Linux(UFW)]
sudo ufw allow 3306
[ Linux(Firewalld) ]
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
[ Windows ]
- 제어판 → 방화벽 → 고급 설정 → 인바운드 규칙 → 포트 추가 → TCP, 3306 허용.
MySQL 설정 파일(my.cnf 또는 my.ini)을 수정합니다.
[ 설정 파일 경로 ]
- Linux: /etc/mysql/my.cnf 또는 /etc/my.cnf
- Windows: C:\ProgramData\MySQL\MySQL Server X.Y\my.ini
- [mysqld] 섹션에 다음 항목을 확인 및 변경
bind-address = 0.0.0.0
변경 후 MySQL 서버를 재시작합니다
sudo systemctl restart mysql
유닉스 소켓 파일 경로를 확인합니다
mysql_config --socket
클라이언트가 올바른 소켓 파일 경로를 사용하는지 확인합니다
mysql -u username -p --socket=/var/run/mysqld/mysqld.sock
MySQL 서버의 오류 로그를 확인하여 추가적인 문제를 진단합니다.
일반적으로 오류 로그는 /var/log/mysql/error.log 또는 /var/log/mysqld.log에 저장됩니다
cat /var/log/mysql/error.log
클라이언트와 서버 간의 버전 차이가 너무 큰 경우에도 연결 문제가 발생할 수 있습니다. MySQL 클라이언트를 최신 버전으로 업데이트하거나 서버와 동일한 버전의 클라이언트를 사용해 봅니다.
원인 | 해결 방법 |
MySQL 서버가 실행되지 않음 | MySQL 서버 상태를 확인하고 실행. |
포트 또는 호스트 설정 문제 | MySQL 포트(기본 3306) 확인, 클라이언트에서 올바른 포트/호스트 설정. |
방화벽 또는 보안 그룹 설정 문제 | MySQL 포트(3306) 허용 설정 추가. |
bind-address 설정 문제 | my.cnf 파일의 bind-address를 0.0.0.0 또는 원하는 IP로 변경. |
소켓 파일 문제 | 올바른 소켓 파일 경로를 지정하거나 파일 경로를 수정. |
이 오류는 MySQL 서버와 클라이언트의 네트워크 설정 문제로 발생하는 경우가 대부분입니다. 위 해결 방법을 차례대로 시도하면 문제를 해결할 수 있습니다. 추가 문제가 있다면, MySQL 오류 로그를 분석하는 것이 중요합니다.