Error: listen EADDRINUSE: address already in use :::””
Error: listen EADDRINUSE: address already in use :::””

Error: listen EADDRINUSE: address already in use :::””

Tags
Node.js
Error Log
Published
December 11, 2023
Author
gozneokhan

Error: listen EADDRINUSE: address already in use :::3306 발생

작업을 진행하던 중 REST client를 사용하여 API를 테스트하기 위해 nodemon을 실행했는데, 갑자기 다음과 같은 오류가 발생했습니다. 에러 내용을 자세히 살펴보면 "Error: listen EADDRINUSE: address already in use :::3306"라는 내용이 있습니다.
"Error: listen EADDRINUSE: address already in use :::3306"
notion image
이는 3306번 포트가 현재 다른 프로세스에 의해 사용 중이어서 해당 포트를 사용하는 현재 서버를 시작할 수 없다는 에러 메시지입니다.
이러한 에러 메시지는 두 가지 상황 중 하나일 것입니다. 정말로 다른 프로세스가 해당 포트를 사용 중이거나, NodeJS 프로세스가 이전에 비정상적인 방식으로 종료되어 발생한 일반적인 증상입니다.

해결 방법

이 문제를 해결하려면 먼저 3306번 포트를 사용하는 프로세스를 찾아서 종료 해야합니다. 이 과정에서 GUI를 활용하는 것이 가장 빠른 방법일 수 있습니다. 주로 작업 관리자와 같은 프로세스 탐지 프로그램을 사용하는데, 이러한 프로그램에서는 특정 포트 번호를 사용하는 프로세스를 직접 표시하지 않습니다.
따라서 먼저 작업 관리자나 기타 프로세스 탐지 도구를 열어 해당 포트를 사용 중인 프로세스를 찾아야 합니다. 그 후, 찾은 프로세스를 선택하고 종료 또는 강제 종료하여 프로세스를 중지합니다.
이렇게 해서 3306번 포트를 확보한 다음에는 다시 nodemon을 실행하면 문제가 해결될 것입니다.

1. window 버튼 + R 클릭

notion image

2. 사용 중인 프로세서 확인하는 명령어 입력

명령프롬프트(CMD) 실행 후 커맨더 창에 명령어 입력합니다.(사용 중인 프로세서 확인 방법)
netstat -ano
-a (모든 포트 표시)
-n (IP:PORT 형식으로 표시)
-o (PID표시)

3. 터미널에 PID 리스트 명령어 실행

netstat -ano 입력 후 리스트를 확인합니다.
netstat -ano
notion image

4. 재사용 할 로컬 주소와 PID값 확인

재사용하고자 하는 로컬 주소와 함께 프로세스 ID인 PID 값을 확인하는 것이 꼭 필요합니다.
notion image

5. 연결된 PID 번호와 포트 번호 확인하기

저의 경우 PID 5192번에 3306 포트가 잡혀있었습니다. 이후 작업 관리자로 넘어갑니다.
notion image

6. 작업관리자를 실행

notion image

7. PID 정렬 후 번호 확인

PID 정렬을 누른 후 아까 확인하였던 PID 5192를 찾습니다.
notion image

8. 사용중인 'mysqld.exe' (혹은 'node.exe') 작업 끝내기

제 경우에는 해당 프로세스가 'mysqld.exe'에서 사용 중이었습니다. 일반적으로는 'node.exe'가 해당 프로세스인 경우가 많습니다. 해당 프로세스를 클릭한 후 "작업 끝내기"를 선택하여 강제로 종료합니다.
notion image

9. 'npm run dev' 명령어 실행

이제 'npm run dev' 명령어를 실행하여 정상적으로 작동하는지 확인해줍니다.
notion image
notion image