본문 바로가기
AI 웹개발반

[TIL] MySql : Error 2002 (HY000): Can't connect to local MySQL server through socket

by 째깍단 2023. 5. 26.

오늘 한 것

[O] 프로필 내용 js로 fetch, 정보 가져오기 드디어 성공

[O] 갑자기 생긴 mysql  Error 2002 해결..

 

 

 

 

 

 

17시 쯤 에러발생!!   해결은 11시라니....... 눈물이 앞을 가린다

 

갑자기 mysql 에러가 생겨 백엔드 서버에서 프론트엔드로 정보를 전달하지 못하는 문제가 생겼다.

 

 

 

 

 

- 과정 1 -

 

튜터님께 질문을 하러간 상태에서 에러가 발생해서ㅠ

일단 보내고자했던 값들이 잘 보내지고 있는지 확인하고자 했다.

 

포스트맨에서도,  drf yasg을 사용한 API 페이지 에서도 정보가 가져와지는데,

연결한 프론트엔드 서버에서는 계속 정보를 가져오지 못하는 문제가 생겼다.

 

일단 백서버 문제는 아니라는 결론.

 

 

 

 

 

 

- 과정 2 -

 

api를 잘 설정했는지, 오타는 없는지 살펴봄.

 

js html 문서 연결이 잘 되지 않았나 살펴보고

console에러를 보니 js파일이 제대로 연결되어있지 않아서 수정했다.

 

 

 

이후 백엔드 터미널로 돌아와보니 MySql connection 문제가 떠있는 상태였다!!

 

같은 문제가 있었던 팀원분이 mysql 버전을 다운그레이드 해보라는 팁을 주셔서 uninstall 후 재설치해보았다.

하지만 계속 같은 mysql.sock 가 없다는 Error 들이 발생함

 

 

 

 

 

 

- 과정 3 -

 

MySql connection 문제가 생겨 workbench 에서 사용하던 DB에 접근을 시도했는데,

 

접근하려고 할때마다 재부팅 오류,

"예기치 못한 문제가 발생해 종료한다" 는 문구가 떴다.

 

 

 

 

그래서 workbench를 종료해두고 터미널에서 접근을 시도해보았다.

 

$ mysql -u root -p
$ mysql.server start

 

이 외 여러 명령어에서 아래 오류를 뱉음

 

ERROR 2002 (HY000): Can't connect to local MySQL server through socket

 

 

 

 

 

sudo 권한으로 실행하였으나 오류 발생.

$ sudo mysql.server start

```

Starting MySQL
... ERROR! The server quit without updating PID file

```

 

 

 

 

 

brew에서 백그라운드 실행 명령어는 먹혔다

하지만 실행 후에 mysql -uroot 를 실행하면 Error 2002 발생 후

아무것도 동작하지 않아 종료했다..

 

$ brew services start mysql

 

 

 

 

약간은 다른 오류ㅋㅋ

 

$ mysql_secure_installation

...
Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

```

 

 

볼 수 있는 에러란 에러들은 다 보면서 에러들을 검색해서 해결하고자 했다..

 

 

 

 

 

 

 

 

결국 핵심은 Error 2002, socket문제라는 mysql.sock 파일 문제라는 것인데, 

해당 에러는 매우 다양한 경우에 생기기때문에 해결 방법도 매우 많다고 한다...

 

 

 

 

시도 1)  재부팅 및 삭제 및 재설치

 

 

mysql 경로 확인

 

$ which mysql

 

 

 

홈페이지에서 설치했을 경우 (뒤의 경로는 which mysql에서 확인하여 넣어주기)

 

$ sudo rm -rf /usr/local/mysql

 

 

 

brew로 설치했을 경우 

 

$ brew uninstall mysql

 

 

이후 재설치했지만 해결되지 않음

DB삭제 후 재 생성도 먹히는 상태가 아니어서 일단 다음 단계로 넘어갔다

 

 

 

 

 

 

시도 2) stackoverflow 에 있는 명령어 입력해보기

 

 

[참고] : 

https://stackoverflow.com/questions/15450091/error-2002-hy000-cant-connect-to-local-mysql-server-through-socket-tmp-mys

 

 

위의 문서와 여러 블로그를 참조하여 해결 방법들을 시도해보다가..

이해하지 못하는 명령어 입력을 반복하다 보면 해결이 오히려 불가능해질 거라고 생각했다.

 

실제로 위 문서의 명령어들과 일치하지 않는 파일 경로를 가지거나

파일의 경로들이 변경되어있는 경우가 가끔 있었는데,

다른 블로그에서 에러해결에 성공한 명령어 중 파일을 옮기는 것들이 있어서

터미널사용에 미숙한 현재 시점에서 조금 치명적이지 않았나 싶다.

 

 

그래서 일단 멈추고 생각을 다시 정리,

오류를 재검색하면서 현재 나의 상태에 가장 적절해 보이는 방법을 적용해야하는데...

 

 

 

 

 

 

 

 

 

 

시도 3) 완전 삭제 후 재부팅 및 재 설치

 

뭔가 남아있는 파일이 있으니 같은 에러가 발생하고 오류가 해결되지 않는 것이라 생각,

완전 초기화를 위해 mysql파일들을 완전 삭제 후 재설치해보기로 했다.

 

 

# brew로 백그라운드에서 실행중인 mysql 중지
$ brew services stop mysql

 

#경로 확인 후 brew 설치 => 강제 삭제
$ which mysql
$ brew uninstall --force mysql

 

or 홈피에서 설치했으면

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

 

 

명령어들을 한 줄 씩 입력하여 모든 정보를 삭제, (적용되지 않는 것도 있다)

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*

 

 

컴퓨터를 재부팅 한다

 

 

이후 mysql 재 설치 

 

 

#brew로 설치
$ brew install mysql

#mysql 시작
$ mysql.server start

 

 

$mysql -uroot
# ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

와와 드디어 다른 에러를 보았다ㅠㅠ

기본 설정이 없어서 denied 된 듯.

 

 

 

아래 명령어로 기본 설정을 해준다

 

$ mysql_secure_installation

 

 

 

> 내가 보기 편하려고 옮겨 적어두는 기본 설정 내용

 

  • Would you like to setup validate password plugin?
    복잡한 비밀번호를 사용하도록 제한해주는 플러그인을 사용하려면 yes  (대략 8글자를 넘는 숫자+영어 비밀번호를 추천함)
    비밀번호 제한받지 않고 쓰고 싶다면 no

  • Remove anonymous users? :
    익명사용자 삭제 여부
    yes    -u 옵션 필수 = $ mysql -u root -p
    no     $ mysql만으로 접속 가능

  • Disallow root login remotely?
    localhost외 다른 ip에서 root 아이디로 원격접속 여부
    yes면 원격 접속 불가, no 는 허용

  • Remove test database and access to it? :
    mysql에 기본적으로 설정된 test DB 삭제 여부

  • Reload privilege tables now?
    하나라도 권한 변경을 했다면 yes 해서 하는 게 정신건강에 좋을 것입니다. 그렇다고 합니다

 

 

 

 

 

 

 

[아래 글을 참조하였음] :

 

완전 삭제 후 재설치 가이드

 

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 

 

 

 

초보자를 위한 상세 설치 가이드!!

 

https://wayhome25.github.io/mysql/2017/03/16/mysql-01-install/

 

 

 

 

 

 

 

 

 

 

결국 --force한 방법으로 해결했지만 어떻게든 혼자 해결한 스스로가 기-특

 

알 수 없는 에러가 발생했을 때 해결하는 연습을 오늘 또 한 번 했다^.^

 

 

 

언젠가 양식이 되리라 믿으며 이제 다음 할 일을 하자  뚠뚠 🐜..🐜....

 

 

 

 

 

 

 

학습내용을 바탕으로 내일오늘 할 것

이제 복구를 끝냈으니.. 다시 프론트엔드로 돌아가볼까.....