프로젝트와 mysql db를 연결하는 과정에서 AggregateError [ECONNREFUSED]:
이런에러가 발생했다. 지금까지 mysql2와 dotenv 설치하고 연결까지 해서 npm start
를 하면 안되는 상황이다.
찾아보니 mysql 연결을 실패했다는 뜻이다. => ECONNREFUSED(연결 거부됨)
MySQL 연결 실패 : AggregateError [ECONNREFUSED]:
at internalConnectMultiple (node:net:1118:18)
at afterConnectMultiple (node:net:1685:7) {
code: 'ECONNREFUSED',
fatal: true,
[errors]: [
Error: connect ECONNREFUSED ::1:3306
at createConnectionError (node:net:1648:14)
at afterConnectMultiple (node:net:1678:16) {
errno: -4078,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '::1',
port: 3306
},
Error: connect ECONNREFUSED 127.0.0.1:3306
at createConnectionError (node:net:1648:14)
at afterConnectMultiple (node:net:1678:16) {
errno: -4078,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 3306
}
]
}
전체 에러 메시지를 보면, 다음과 같은 로그가 나온다.
connect ECONNREFUSED ::1:3306
connect ECONNREFUSED 127.0.0.1:3306
node.js가 로컬(127.0.0.1 또는 ::1)dptj 3306포트로 mysql에 접속 시도했지만, mysql이 거기에 없거나 꺼져 있어서 연결이 거부되었다는 뜻이다.
해결방법으로
cmd창에 들어가서 netstat -ano | findstr :3306
명령어를 입력하면 어디에서 3306을 사용하고 있는지 나온다.
나는 TCP 172.30.0.225:51807 172.30.0.72:3306 ESTABLISHED 9776
이렇게 나왔는데,
- 로컬 주소: 172.30.0.225 → 당신의 컴퓨터
- 원격 주소: 172.30.0.72:3306 → 다른 네트워크 상의 MySQL 서버
- ESTABLISHED → 현재 연결 중
- PID 9776 → 이 연결을 사용하는 프로그램
나의 컴퓨터에서는 localhost:3306이 아니라, 다른 컴퓨터(172.30.72)의 mysql 서버에 접속 중이라는 뜻이다.
따라서, 다른 pc(172.30.72)로 사용할 것이라면
MYSQL_HOST=172.30.0.72
MYSQL_PORT=3306
MYSQL_USER=계정명
MYSQL_PASSWORD=비밀번호
MYSQL_DATABASE=데이터베이스명
로 하면된다.