내 로컬에서 접속이 안된다고? MySQL host 설정 하나로 인생 바뀜
127.0.0.1 아니면 localhost? 진짜 중요한 건 딱 한 글자였더라구요...
요즘 뭐만 하면 DB 쓰잖아요? 작은 웹페이지든, 간단한 앱이든 간에, MySQL은 기본 중 기본처럼 깔고 쓰게 되니까요. 근데 이상하게 연결만 하려고 하면 무슨 “host가 틀렸다”, “접속 거부됐다” 이런 문구 뜨면 멘붕 오죠 ㅋㅋ 저도 처음엔 localhost만 써도 되는 줄 알았거든요. 근데 이게 알고 보니까 ‘host’ 설정이란 게 생각보다 깊고, 또 은근 까다롭더라구요...ㅠㅠ 한 번 꼬이면 진짜 몇 시간 날리는 건 기본이고, 구글링 하다가 화만 나고요 ㅎㅎ
그래서 오늘은 제가 직접 겪었던 MySQL host 설정 관련 삽질 썰 + 해결했던 방법까지 탈탈 털어볼까 해요. 뭐 하나라도 비슷한 상황 겪고 계시다면, 아마 고개 끄덕이실지도 몰라요 😉
처음 MySQL 설치했을 때는 그냥 root 계정에 비번 걸고, 쿼리 하나 날려보면 다 된 줄 알았거든요? 근데... 세상 그렇게 만만하지 않잖아요 ㅋㅋ
일단 'host'라는 단어 자체가 좀 뭔가 애매하잖아요. 도대체 'host'가 뭔데? 로컬에서 접속하는데 localhost가 맞는 건지, 127.0.0.1이 맞는 건지, 외부에서 접속하려면 어떻게 해야 하는 건지 진짜 헷갈림 그 자체였어요. 특히 ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server
이런 에러 한 번 봐버리면... 와, 이건 진짜 복잡한 퍼즐 맞추는 기분이었어요.
알고 보니까 MySQL에서 말하는 'host'는 그냥 접속하는 사용자의 IP 주소나 도메인 그 자체더라구요. 단순한 이름 하나인데, 이걸 어떻게 지정하느냐에 따라 접속 가능 여부가 확 갈리니까... 신중하게 다뤄야겠구나! 싶었어요.
그리고 또 하나, GRANT
명령어 쓸 때도 이 host 설정이 핵심이라는 걸 나중에야 알았지 뭐예요~ 😅 오늘 이 글 보시는 분들께는 그런 삽질 안 하시길 바라며, 진짜 필요한 팁들만 쏙쏙 알려드릴게요!
1. "localhost"랑 "127.0.0.1", 똑같은 거 아님?
처음엔 진짜 당연히 같은 거라고 생각했거든요? 브라우저 주소창에 써도 같고, 핑 날려도 같고, 어차피 내 컴퓨터잖아요~ 근데 MySQL은 그렇게 호락호락하지 않더라구요. 이 둘은 사실 운영체제 레벨에서는 비슷한 역할을 하지만, MySQL 입장에서는 다르게 인식해요. 특히 MySQL은 localhost
로 접속하려고 하면 소켓 파일을 먼저 찾고, 127.0.0.1
은 TCP로 접속 시도한다는 거... 이걸 모르고 삽질할 수도 있음요 ㅠㅠ 저는 이거 몰라서 연결 안 되는 이유를 찾느라 반나절 썼습니다...
2. MySQL 유저 계정에 등록된 host가 전부다!
이거 진짜 핵심이에요! 아무리 비밀번호 맞고 사용자 아이디 맞아도, host가 안 맞으면 그냥 ‘넌 접속할 수 없는 사람임’ 이렇게 나와요. 예를 들어, 같은 계정이라도 user@localhost
랑 user@%
는 다른 존재라는 거죠. %
는 모든 host에서 접근 가능하게 해주는 와일드카드인데요, 보안상 이유로 막아놓은 경우도 있어서 무턱대고 쓰면 또 안 되더라구요 😥 꼭 SELECT host, user FROM mysql.user;
로 현재 설정을 먼저 확인해보세요! 이거 모르고 계속 같은 계정인데 왜 접속 안 되냐고 버럭했었음요... ㅋㅋ
3. GRANT 명령어, 그냥 명령어 아님
솔직히 처음엔 GRANT ALL PRIVILEGES
막 이런 거, 그냥 퍼미션 주는 건 줄 알았는데요! 알고 보니 이거 할 때도 IDENTIFIED BY
뒤에 host 지정이 은근히 중요하더라구요. GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'%' IDENTIFIED BY 'pwd';
이런 식으로 써야 외부에서 접근 가능하게 열리는 거였어요. 저처럼 무턱대고 %
만 박았다가, 보안설정에 막히고, 또 방화벽에서 막히고… 진짜 허허, 하나 열리면 다른 데서 막히고 그랬어요.
4. my.cnf 설정 파일도 한 몫 함😤
접속 안 되면 무조건 사용자 계정 문제인 줄 알았는데, my.cnf
파일에 bind-address=127.0.0.1
요 한 줄 때문에 외부 접속이 막히는 경우도 은근 많아요. 이거 뭔가 하면 MySQL이 어디서 접속받을지를 제한하는 거거든요. 0.0.0.0
으로 바꾸면 모든 IP에서 접속 허용된다는 뜻인데, 이걸 모르고 몇 시간 동안 권한 바꿔도 왜 안 되나 싶었네요~ 수정하고 나서도 MySQL 재시작 안 하면 반영도 안 되니까 꼭 systemctl restart mysql
도 해줘야 하구요!
5. 외부 접속? 방화벽, 포트 열림도 체크해야 함!
어느 날은 다 맞게 했는데도 접속이 안 되는 거에요. 그래서 또 한참 구글링 했죠. 그랬더니 방화벽이 3306 포트를 막고 있었더라구요;; MySQL 기본 포트인데요, 이게 열려 있지 않으면 아무리 설정 다 맞아도 연결 자체가 안 돼요. ufw allow 3306
이런 거 꼭 해줘야 하더라구요. 외부에서 접근 테스트할 때는 포트스캔 해보는 것도 나쁘지 않구요. 아, 이건 좀 고급자 느낌 나죠 ㅋㅋ 그래도 진짜 그런 거 한두 번 해보면 실력이 확 느는 느낌이더라구요~
6. 직접 테스트해보면서 하나씩 체크하는 게 답!
결국은 내가 뭘 잘못 설정했는지 직접 부딪혀봐야 알 수 있더라구요. 너무 자동화 도구만 믿고 설정했다가 ‘왜 안 되지?’만 수십 번 말한 적도 있었고요. 저는 결국 하나씩 바꿔가면서 테스트해보는 게 제일 빠르다는 걸 느꼈습니다. 유저 생성 → host 지정 → 권한 부여 → 포트 열림 확인 → 실제 접속 테스트까지, 한 번 제대로 순서대로 해보면 감 잡혀요. 그리고 무엇보다, 한 번이라도 에러 로그 보는 습관 들이면, 삽질 시간 70%는 줄어듭니다~ 진짜루요 🤯
❓ 자주 묻는 궁금한 것들 (FAQ)
Q1. 외부에서 MySQL 접속하려는데 계속 안 돼요. 뭐부터 확인해야 하나요?
→ 제일 먼저 bind-address
설정을 확인하세요. /etc/mysql/my.cnf
또는 /etc/mysql/mysql.conf.d/mysqld.cnf
파일 안에 bind-address=127.0.0.1
로 되어 있으면 외부 접속은 당연히 안 됩니다. 그리고 유저 생성 시 host가 %
로 되어 있는지도 꼭 체크하셔야 해요!
Q2. localhost
랑 127.0.0.1
중 뭘 써야 안전한가요?
→ 둘 다 로컬접속이긴 한데, localhost
는 유닉스 도메인 소켓을 사용하고, 127.0.0.1
은 TCP를 써요. 소켓 접속은 빠르지만 설정에 따라 충돌날 수도 있어서 저는 대부분 TCP로 테스트합니다. 상황에 따라 다르게 써보는 것도 좋구요~
Q3. 사용자 계정에 host를 localhost
로 해놓고 외부에서 접속 가능한가요?
→ 안 됩니다 😭 localhost
는 말 그대로 '그 컴퓨터'에서만 접속 가능한 설정이에요. 외부에서 접속하려면 반드시 host
를 IP
나 %
로 등록해줘야 합니다. 아니면 또 ERROR 1130 만나게 됩니다... 경험담입니다...
흠... 이상하게 복잡했지만, 결국 다 연결되더라구요 😌
이 글 쓰면서도 다시 복습하게 됐는데요, 신기하게도 MySQL에서 가장 단순해 보이는 'host 설정'이 은근히 많은 걸 좌우하더라구요. 처음엔 뭐가 뭔지도 모르겠고 그냥 대충 하다보면 되겠지 싶었는데, 에러 하나 뜨면 바로 좌절...ㅎㅎ
그래도 하나씩 짚어보면서 해결해보니까, 그 전보단 훨씬 감이 생겼달까... 이제는 누가 접속 안 된다고 하면 대충 host 뭐로 설정했어?
이렇게 물어보게 된답니다 ㅋㅋ
혹시 여러분도 그런 경험 있으셨나요?
똑같이 설정했는데 접속은 안 되고, 이상하게 뭔가 빼먹은 느낌? 갑자기 GRANT 명령어가 기억 안 나고... 그런 적 다들 한 번쯤은 있으시죠? 😂 여러분은 어떻게 해결하셨는지도 궁금해지네요. 혹시 저랑 다른 방법으로 뚫으신 분 있으면 댓글이나 피드백 남겨주시면 같이 얘기해봐요!
'노하우_팁' 카테고리의 다른 글
배당금 받으려면 이 날짜는 꼭 기억! 배당 기준일, 알고 가자📅 (0) | 2025.04.25 |
---|---|
사진 정리하다 멘붕 온 당신에게📱💻 (1) | 2025.04.25 |
차 빼달라 전화하기 전에 클릭 한 번! 이거 모르면 나만 손해ㅠ (2) | 2025.04.25 |
돈이 있어야 시작하는 거 아님! 나도 만든 ETF 계좌 후기 😎 (1) | 2025.04.25 |
이 가격 실화냐..? 랜드로버 한 대 살 바엔 제주도 펜션을 샀겠다! (0) | 2025.04.24 |
최근댓글