RDS에서 MySQL에 연결을 시도하는 EC2 인스턴스 (우분투 실행)에서 node.js 응용 프로그램을 실행하고 있습니다. RDS 인스턴스의 보안 그룹에는 EC2 인스턴스의 보안 그룹이 포함됩니다. 두 인스턴스는 모두 같은 영역 인 us-east-1c에 있습니다.EC2의 node.js가 RDS에 연결하지 못했습니다
mysql -u xxxxx -h xxxxx.xxxxxx.us-east-1.rds.amazonaws.com -p
을 사용하여 MySQL CLI를 사용하여 RDS에 연결하려고하면 아무런 문제없이 연결됩니다.
그러나 필자가 작성한 RDS 연결 테스트 유틸리티를 사용하여 연결을 시도하면 Error: connect ECONNREFUSED
이 표시됩니다. 테스트 유틸리티 코드는 다음과 같습니다.
var mysql = require('mysql');
mysqlConfiguration = 'production';
var mysqlConfigs = {
'production':{
host:'xxxxx.xxxxx.us-east-1.rds.amazonaws.com',
password:'xxxxx',
user:'xxxxx',
database:'xxxxx'
},
}
var connectionPool = mysql.createPool({
host: mysqlConfigs[mysqlConfiguration]['host'],
user: mysqlConfigs[mysqlConfiguration]['user'],
password: mysqlConfigs[mysqlConfiguration]['password'],
database: mysqlConfigs[mysqlConfiguration]['database'],
multipleStatements: true,
connectionLimit: 50,
});
connectionPool.getConnection(function(err,db){
console.log(err);
console.log(db);
if(db) db.release();
});
오류는 연결이 거부되었음을 나타냅니다. 이 코드를 RDS 인스턴스로 허용 된 내 컴퓨터에서 실행하면 정상적으로 RDS에 연결됩니다.
{ [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
fatal: true }
명령 줄에서 mysql을 사용하여 연결할 수있는 방법은 매우 이상하지만 node.js 응용 프로그램에서는 사용할 수 없습니다.
EC2 설명서의 EC2 iptables 아웃 바운드 기본값을 살펴본 결과 모든 아웃 바운드 트래픽이 허용된다고 말합니다.
왜 이런 생각입니까?