https://kong-dev.tistory.com/125
여기서 발생한 이슈를 한참의 검색을 통해서 해결할 수 있었다.
에러내용은 다음과 같았다.
우선 이 이슈를 해결 하기 위해
사용한 임시방편의 수단이
const db = mysql.createConnection({
host: '127.0.0.1',
user: 'root',
password: '비밀번호',
database: 'todo_db',
});
위와 같이 host를 localhost 가 아닌 127.0.0.1로 입력하는 거였는데,
내가 알기로는 localhost와 127.0.0.1은 같은거였는데,
왜 저걸 localhost 대신 127.0.0.1 을 입력하는 걸로 해결이 되는 걸까 가 의문이었다.
우선 저 이슈를 해결 하기 위해 에러코드를 복사해서 구글링을 했었다.
근데 정말정말 신기하게도
connect Error: connect ECONNREFUSED ::1:3306
에 대한 결과는 없었고,
connect Error: connect ECONNREFUSED 127.0.0.1:3306 에 대한 내용이었다.
::1 이 대체 뭔데?
::1
::1 은 0.0.0.0.0.1 의 약어이다.
0.0.0.0.0.1은 내가 알던 4자리의 ip주소와는 뭔가 다르다.
총 6자리의 숫자를 가지는 이 ip 주소는
IPv6 형태의 IP 주소 라고 한다.
기존의 표기방식(IPv4) 는 2의 32승 의 IP 주소를 표기할 수 있었는데,
이걸 거의 다썼단다.
그래서 새로 표준으로 정의된게 IPv6임
그럼 0.0.0.0.0.1 얘는 뭐하는 애냐
얘는 IPv4의 127.0.0.1 과 같은 애다.
즉 IPv6로 표기된 IP address의 localhost 는 0.0.0.0.0.1 이고,
이걸 짧게 편하게 쓰기 위해서 ::1 로 쓴다는 거임
그럼 위의 에러 코드를 다시 찬찬히 보자
econnrefused ::1:3306
저 연결된 영단어를 뜯어보면
e conn refused로 뜯어낼수 있다.
e 는 모르겠고
conn은 connect를 말하는거 같다.
refused는 거절 됐다는 거니까
::1:3306 통한 연결이 거절됐다 정도로 해석이된다.
::1 은 localhost 고 3306은 mySQL port number 니까
느낌에 내가 host에다가 localhost를 입력하면 ::1 로 해석을 하는데,
얘가 host로 받고 싶어하는 값은 127.0.0.1 이다.
(그러니까 host 127.0.0.1 로 입력을 하면 에러가 안나겠지)
여기 까지 도달했을 때 머릿속을 스친 생각은
그럼 내가 만약 localhost의 지정 값을 ::1 이 아니라 127.0.0.1로 지정해준다면 해결되지 않을까..?
였다
locahost 변경
localhost를 변경해주는 건 생각보다 쉬운일이었다.
$ sudo vim /private/etc/hosts
이걸 입력하면
이런게 나오는데
::1 앞에 # 붙여서 주석처리 해버림..ㅎ
그리고 저장하고 다시 코드를 돌려보니까.
와;; 이게 되네;;
일단 되서 기분은 좋다만 뭔가 찜찜하다.
뭔가 이렇게 해결을 하면 안될것 같은 기분이다.
'경일 > nodejs' 카테고리의 다른 글
[nodejs] todoApp async await 으로 조지기 (0) | 2022.02.04 |
---|---|
[nodejs] todoApp 만들기 feat. mySQL (0) | 2022.02.04 |
[nodejs] node에서 mySQL 연결(Error: connect ECONNREFUSED ::1:3306) (4) | 2022.02.03 |
[nodejs]todoApp 만들기(express, nunjucks, mongodb,body-parser) (0) | 2022.02.01 |
애플 맥북에어 M1 환경설정 homebrew 부터 nodejs 까지 (0) | 2022.01.27 |
댓글