말 그대로다. 이런 경우가 실제로 생겨서, 기록한다. 상황을 설명하면
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 서버가 별도의 값으로 설정되어 있을 수도 있으니, 확인 후 적용하는 것이 정신건강상 좋다.
끝.
'프로그램' 카테고리의 다른 글
node.js 에서 reconnect callback 사용법 (0) | 2015.04.04 |
---|---|
protocol vs host vs hostname vs href (0) | 2015.03.13 |
centos 에서 node.js 설치 (0) | 2015.03.10 |
node.js 를 daemon 으로 돌리고 싶을 때 - daemonize (0) | 2015.03.09 |
javascript( node.js ) 에서 for each + key 값을 이용해야 할 때. (0) | 2015.02.25 |