mongoose不会连接到ec2 mongodb实例

时间:2018-02-23 11:36:39

标签: node.js mongodb mongoose timeout

我正在尝试创建一个连接到我在ec2实例上托管的mongodb的node.js服务器。我是这样做的:

mongoose.connect("mongodb://username:password@ec2-xx-xx-xxx-xxx.eu-central-1.compute.amazonaws.com:27017/dbname");

db.on('error', err => {
    console.log('Mongoose default connection error:', err);
    db.close();
});

db.once('open', () => {
    console.log(`Mongoose default connection open`);
});

但它一直在说我这个错误:

Mongoose default connection error: { MongoError: failed to connect to server [xxx] on first
 connect [MongoError: connect ETIMEDOUT xxx:27017]
    at Pool.<anonymous> (/Users/jmisiti/hm-landing/node_modules/mongodb-core/lib/topologies/server.js:336:35)
    at emitOne (events.js:115:13)
    at Pool.emit (events.js:210:7)
    at Connection.<anonymous> (/Users/jmisiti/hm-landing/node_modules/mongodb-core/lib/connection/pool.js:280:12)
    at Object.onceWrapper (events.js:318:30)
    at emitTwo (events.js:125:13)
    at Connection.emit (events.js:213:7)
    at Socket.<anonymous> (/Users/jmisiti/hm-landing/node_modules/mongodb-core/lib/connection/connection.js:189:49)
    at Object.onceWrapper (events.js:316:30)
    at emitOne (events.js:115:13)
    at Socket.emit (events.js:210:7)
    at emitErrorNT (internal/streams/destroy.js:62:8)
    at _combinedTickCallback (internal/process/next_tick.js:102:11)

    at process._tickCallback (internal/process/next_tick.js:161:9)
  name: 'MongoError',
  message: 'failed to connect to server [xxx] on first connect [MongoError: connect ETIMEDO
UT xxx:27017]' }

我的连接字符串100%确定它有效。我的mongoose版本与我的mongodb版本配合得很好。任何的想法 ? :)

PS:端口在27017上打开,并且已经使用我的mongodb实现了我的一个aws实例。所以我确信它有效。

2 个答案:

答案 0 :(得分:1)

确保您已在出站端口中注册了27017端口在EC2安全组中。

然后尝试访问数据库。如果您已经添加了端口并仍然遇到错误,请检查MongoDB进程是否作为服务运行(即在后台)。如果没有,请关注this procedure

答案 1 :(得分:0)

知道了。我无法从我的localhost连接到我的mongodb服务器(不知道为什么)但是当我从我的ec2实例连接到我的mongodb服务器时,它可以工作。所以没关系:)