-
[MySQL] ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' / 맥북 환경 변수 설정MySQL 2024. 10. 18. 22:47
문제 상황
DB를 확인하려고 터미널에
mysql -u root -p
를 쳤는데 두둥 에러가 떴다.ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
하루에도 몇 번이고 사용했던 명령어인데 왜 안되는지 혼란스러웠다. 원인은 맥북(M2 pro)을 업데이트한 것과 mySQL을 재설치했던 것 요 두 개 중에 하나인 것 같기는 하다. 약 하루동안 삽질을 해서 해결했다. 나와 같은 문제를 겪은 사람이 있다면 도움이 되길 바란다.
문제 해결
터미널에
brew services list
명령어를 쳐서 mysql 의 상태를 확인했다.jinkyungjung@jinkyungui-MacBookPro ~ % brew services list Name Status User File mongodb-community none mysql stopped jinkyungjung ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
stopped
라고 뜬다. 왜 실행이 안되고 있지 하고brew services start mysql
명령어를 쳐서 mySQL을 실행시키려고 시도했다.jinkyungjung@jinkyungui-MacBookPro ~ % brew services start mysql Bootstrap failed: 5: Input/output error Try re-running the command as root for richer errors. Error: Failure while executing; `/bin/launchctl bootstrap gui/501 /Users/jinkyungjung/Library/LaunchAgents/homebrew.mxcl.mysql.plist` exited with 5.
뭔가 또 에러가 떴다.
스포 하자면 이후 나는 설치된 mySQL을 지우고 다시 재설치하고 맥북 환경변수 설정을 하지만 사실 돌이켜 보면 brew services start mysql 명령어부터 잘 못 됐다.
더 자세히는 설치된 mySQL 폴더를 확인하고 정확한 버전을 명시해 줘야 한다. 그리고 아마 mySQL 에러를 처음 겪은 사람이라면 당황한 나머지 (나도 그렇다) brew로 도 설치를 시도해 보고, mySQL 홈페이지에서의 Installer 로도 설치를 하는 등 두서없이 설치하고 삭제하고 재설치하고 하는 경우가 많을 것이다.
우선 회사나 프로젝트에서 필요한 mySQL 버전이 무엇인지 확인하자!
그리고
mysql --version
을 통해서 설치된 버전을 확인하자. 혹시나 두 개 이상이 뜨고 있는 상황이라면 필요한 버전을 제외한 나머지는 지우기를 지향한다. 왜냐면 최대한 위험 요소를 제거해야 하기 때문이다.맥북 기준 mySQL 설치 폴더를 확인할 수 있는 곳은 아래에 터미널의 위치로 들어가 보면 확인할 수 있다.
jinkyungjung@jinkyungui-MacBookPro ~ % cd /opt/homebrew jinkyungjung@jinkyungui-MacBookPro homebrew % ls opt/ abseil@ lz4@ nvm@ brotli@ mongodb-community@ openssl@ c-ares@ mongodb-community@6.0@ openssl@1.1@ ca-certificates@ mongodb-database-tools@ openssl@3@ dart@ mongosh@ openssl@3.3@ dart@2.18@ mysql@8.0@ protobuf@ icu4c@ node@ protobuf@28@ libcbor@ node.js@ pzstd@ libevent@ node@16@ xz@ libfido2@ node@22@ zlib@ libnghttp2@ nodejs@ zstd@ libuv@ npm@
제 현재 컴퓨터 기준으로 보면 mysql@8.0 버전이 깔려 있는 것을 볼 수 있다.
혹시 여러 개가 깔려 있다면 하나를 삭제해 주세요. (저는 그냥 다 지우고 다시 재설치했어요.)
TIL/mysql/MySQL-완전-삭제하고-재설치하기-(MacOS).md at master · rangyu/TIL
오늘 내가 배운 것 (Today I Learned). Contribute to rangyu/TIL development by creating an account on GitHub.
github.com
그래서 만약 삭제 했다면 최종적으로 확인할 것은 cd /opt/homebrew/opt 위치에서의 mysql 폴더가 잘 삭제 됐는지 그리고 cd /opt/homebrew/etc 위치의 my.cnf 파일도 잘 삭제 됐는지 확인해야 한다.
재설치 후에도 동일하게 위의 두 개의 위치에 mysql 폴더 하나가 잘 있는지 그리고 my.cnf 파일이 잘 있는지 확인한다.
jinkyungjung@jinkyungui-MacBookPro ~ % cd /opt/homebrew jinkyungjung@jinkyungui-MacBookPro homebrew % ls etc/ bash_completion.d/ mongod.conf openssl@1.1/ paths ca-certificates/ my.cnf openssl@3/
그래서 한번 더 정리를 하자면
cd /opt/homebrew/opt/mysql@8.0 에서 설치된 mysql의 정확한 버전을 확인하고 brew services start mysql@8.0 이라고 입력한다.
그럼에도 불구하고 동일한 에러가 뜬다면 그리고 맥북이라면 환경변수를 고려해 봐야 한다.
좀 더 풀어서 설명하면 우리가 평소에
mysql -u root -p
했을 때 db에 바로 접속이 가능했던 것도 /opt/homebrew/opt 위치에 있는 mySQL 실행 파일이 실행되도록 처리가 되어 있었기 때문에 가능했던 겁니다.그래서 만약
/usr/local/mysql/bin/mysql -u root -p
혹은/opt/homebrew/opt/mysql -u root -p
(brew로 설치한 경우) 해서 mysql이 실행이 된다면 환경변수 문제가 맞다.터미널에
vi ~/.zshrc
을 입력한다.source /Users/jinkyungjung/.docker/init-zsh.sh || true # Added by Docker Desktop ## MYSQL export PATH="/opt/homebrew/opt/mysql@8.0/bin:$PATH" ~ ~ ~ ~ ~ ~ ~ ~ "~/.zshrc" 13L, 394B
이와 비슷한 내용이 나올 텐데 우리는
## MYSQL
export PATH="/opt/homebrew/opt/mysql@8.0/bin:$PATH"이 부분을 추가해 줘야 한다. 버전은 각자 설치한 버전을 앞에서 말한 대로 찾아서 바꿔서 넣어주면 된다.
알파벳
i
를 누르면 insert 모드가 된다.넣어야 하는 부분을 추가한다. 참고로 ## 은 주석을 나타내니 각자 원하는 설명을 달아주면 된다.
esc
키를 눌러서 insert 모드를 해제한다.:wq
눌러서 저장하고 나온다.vi ~/.zshrc
를 해서 다시 들어가서 잘 들어 가 있나 확인한다.다시 나와서 터미널에
source ~/.zshrc
입력해서 적용시킨다.이제
mysql -u root -p
하면 아주 잘 된다.반응형