본문 바로가기
Server

mysql 완전 재설치 : The driver has not received any packets from the server. 오류 해결

by DuncanKim 2022. 9. 21.
728x90

The driver has not received any packets from the server. 오류 해결(mysql 완전 재설치)

 

4시간 여의 헛발질...

 

1. 문제의 발생

AWS를 활용하여 도커 배포를 실험을 한창 하고,,, 그다음 날. 인텔리제이를 켜고 평소처럼 localhost:8080의 세상으로 들어가려는 순간. 다음과 같은 오류를 만났다.

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) ~[mysql-connector-java-8.0.29.jar:8.0.29]
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64) ~[mysql-connector-java-8.0.29.jar:8.0.29]


    ....

패킷을 보냈지만 드라이버가 패킷을 받지 못하는... 흔히 말하는 연결 오류가 발생하였다. 하지만 나는 mac 로컬에서는 특별히 무엇인가를 삭제하거나 이동시킨 것이 없고, UTM이랑 AWS에서 작업을 한 것 밖에 없는데 뭐 때문에 꼬여버렸는지 몰랐다.

그래서 터미널을 켜고 mysql이 구동되는지를 알아보았다.

ERROR 2002 (HY000) : Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

??? 초보 개발자에게는 당연하게도 난생 처음 보는 에러였다. 뭐 자세히 보니 소켓 파일이 연결되지 않는 문제인 거 같은데, 그러면 거기에 파일이 없거나, 아니면 있지만 인식을 못하거나, 불명의 원인으로 그것을 인식하지 못하는 것일 것이라는 생각을 하였다.

여러 블로그들을 참고하여 mysql.sock 위치를 찾아보기도 하고, 경로를 심볼릭링크로 설정하기도 하였다.

mysql.sock 위치는 아래의 명령어로 찾았다.

mysql_config --socket

var/lib/mysql 경로에 mysql.sock 파일이 없다는 것을 알 수 있었다.확인을 해보니 없는 것 같아서 새로 폴더를 만들어서 sock 파일을 넣어주기도 했는데, 똑같은 오류는 계속 떴다.

brew를 사용해서 mysql을 재설치를 해보기도 하고, my.cnf 파일을 지우고 새로 받아도 보았지만, 결국 되지 않았다.

한 세 시간 쯤 찾았을까 그냥 포맷을 시키는 정도로 mysql의 흔적을 없애고 다시 설치하면 되지 않을까 하는 생각이 들었다.

AWS 연결을 인텔리제이에서 시도를 하긴 했으니까... 그래서 아주 깊은 삭제, 설치를 해보기로 하였다.

 

 

2. Mysql 깊은 삭제와 재설치

 

다음과 같은 절차를 따르면서 재설치를 진행하였다.

 

1) MySQL 프로세스 죽이기

 

나는 홈브루로 설치를 해서 아래와 같은 방법을 사용하였다.

 

 

(homebrew로 설치했을 경우)

brew services stop mysql

 

(launchctl을 등록했다면 내리기)

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

 

2) 관련 파일 삭제하기

 

(1) 설치 경로 확인하기

which mysql
/usr/local/bin/mysql

 

(2) homebrew로 삭제하기

brew uninstall --force mysql

혹은

brew uninstall mysql --ignore-dependencies
brew remove mysql
brew cleanup

 

 

(3) 다음의 라인을 한 줄씩 입력해서 삭제한다.

sudo rm -rf /usr/local/mysql
sudo rm -rf /usr/local/bin/mysql
sudo rm -rf /usr/local/var/mysql
sudo rm -rf /usr/local/Cellar/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /tmp/mysql.sock.lock
sudo rm -rf /tmp/mysqlx.sock.lock
sudo rm -rf /tmp/mysql.sock
sudo rm -rf /tmp/mysqlx.sock
sudo rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*

 

 

(4) 완전 삭제한 이후 컴퓨터를 재부팅한다.

 

3) homebrew로 재설치하기

 

brew install mysql

 

 

4) mysql 서비스 시작하기

 

brew services start mysql

 

 

5) 비밀번호 없이 root 로그인

 

mysql -uroot

여기서 문제가 있었는데, 나의 경우, 비밀번호가 살아있었다... 이전에 설정한 root 비밀번호가 살아있었는데, 이유는 모르겠다.

 

 

6) root 비밀번호 설정하기

 

mysql_secure_installation

=> VALIDATE PASSWORD PLUGIN 설치 여부 물어볼 때는 N(아니오)를 선택할 것.

 

 

위의 절차를 따라하니, 정상적으로 스프링 부트 프로젝트가 로컬에서 돌아갔다. AWS ec2, rds 뭐 다 끄고 난리였지만, 완전 삭제, 재설치부터 해보는 습관을 들여야겠다는 생각을 할 수 있었다.

 

 

 

 

 

<참고>

https://github.com/rangyu/TIL/blob/master/mysql/MySQL-%EC%99%84%EC%A0%84-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B3%A0-%EC%9E%AC%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-(MacOS).md
728x90

댓글