프로그램

nodejs 에서 mysql connection 이 안 될 때( connect ECONNREFUSSED 에러 ).

(주)CKBcorp., 2015. 3. 11. 06:00
반응형





말 그대로다. 이런 경우가 실제로 생겨서, 기록한다. 상황을 설명하면


1. 개발을 위해 테스트 서버에서 node.js 로 서비스 개발.

2. node.js + mysql 을 사용.

3. 실서버로 코드 이동

4. 실행.

5. 실패 + 좌절.



[ 테스트 서버에서 되던게 왜 실서버에서는 안되냔 말야. ]


결론부터 이야기하면, mysql connection 이 fail 나서 그런거다.

당연히 암호나 계정 문제가 아니고... node.js 에서 mysql connection 접속 자체가 실패하는 듯.


1. 실서버는 mysql port 가 기본포트가 아닌데, 

2. node.js 의 mysql connection 설정에 port 번호 설정하는 항목이 있는데도

3. port 값을 넣어도 안 되더라.


역시나 google 신께 가르침을 부탁하니... tcp/ip 로 mysql port 접속하는 방법 말고, named pipe 로 접속하는 방법을 알려주더라.


https://github.com/felixge/node-mysql/issues/874


본문을 보면 알 수 있겠지만, 한마디로 정리하자면


var connection = mysql.createConnection({

  socketPath : '/tmp/mysql.sock',

  user       : 'root',

  password   : '123'

});


와 같이 connection 객체를 설정하면 된다. 


1. 보면 알겠지만, host, port 값을 설정하지 않는다.

왜냐하면 이건 mysql 을 서버 내부의 mysql 과 named pipe 로 연결하는 방법이기 때문.

그러므로 만약 node.js 와 db 서버가 분리되어 있다면, 이 방법은 안된다. ( 안될거다. 확인은 안해봤지만. 안될껄? )


2. 위의 /tmp/mysql.sock 값은 mysql_config 값으로 얻을 수 있다.

정확하게는, 아래의 명령으로 확인 가능하다.


$ mysql_config --socket


기본 설정값이 /tmp/mysql.sock 인데, 자신의 mysql 서버가 별도의 값으로 설정되어 있을 수도 있으니, 확인 후 적용하는 것이 정신건강상 좋다.


끝.






 


반응형