ABOUT ME

Today
Yesterday
Total
  • [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 하면 아주 잘 된다.

     

    반응형

    댓글

Designed by Tistory.