[Nest] 36104 - 2023. 10. 16. 오후 12:44:21 ERROR [TypeOrmModule] Unable to connect to the database. Retrying (5)... Error: connect ECONNREFUSED ::1:3306 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1300:16)

 

초장부터 이런 오류가... NestJS에서 데이터베이스에 연결 할 수 없고,  "ECONNREFUSED" 오류는 로컬 호스트(localhost)의 3306 포트(MySQL, MariaDB)에 대한 연결이 거부되었음을 의미한다. 처음엔 학교 와이파이에 연결한 상태에서 개발을 진행 중이었기 때문에 학교측에서 와이파이에 포트 제한을 걸어놓은 줄 알고 있었다(실제로 학교 선배도 그렇게 말했었다. 그래서 어찌저찌 우회해서 개발했다고...) 

그래서 별짓 다 했다. 방화벽 문제인가 싶어서 인바운드 편집도 해보고... 프로젝트 DB로 MariaDB를 쓰고 있었기 때문에 3306 포트 접속 허용하고... 암튼 별 걸 다 해봤다. 그런데도 계속 똑같은 오류가 떠서 원인이 뭘까 곰곰히 생각해 보았다.

 

결국, 다음날에 문제를 해결할 수 있었다. 문제의 원인은 학교 와이파이도, 방화벽도 문제가 아니었다. 문제는 그냥 SSH 터널링이 안 되어서 그런 것이었다. 사실 이를 전혀 간과하지 못했던 것이, 나는 이미 파워쉘을 통해 SSH 터널링 해 놓은 상태였고, 그 상태에서 접속을 시작했는데 안 되었던 거라서(프로젝트가 그냥 일회성 토이프로젝트가 아닌, 실제로 창업팀이 서비스할 프로덕트를 만드는 것이라 보안이 그 무엇보다 중요해서 SSH 서버를 반드시 사용해야 한다) 전혀 터널링이 안 되어서 문제가 되었을 것이라는 생각을 안 해 봤다.

 

그런데, 내가 쓰고 있는 IDE는 VSCode인데, 여기서 터미널을 제공해주고 있다. 여기서 ssh 접속 코드를 입력해주면 되는 거였는데 따로 윈도우 터미널로 접속하면 그게 IDE까지 연동이 되지는 않는 모양이다.(왜 그런지는 모르겠지만 잠재적으로 내린 결론이다) 결국 윈도우 터미널이 아닌 IDE에 내장된 터미널로 SSH 터널링 했고, 그 후 접속 시도해 봤는데 그동안의 삽질이 무색하게도 바로 성공해버렸다...

 

결론: 개발 시, SSH 서버에 접속할 때는 반드시 IDE에 내장된 터미널을 통해 터널링을 시도하자.

+ Recent posts