代码之家  ›  专栏  ›  技术社区  ›  Jeremy M.

mongoose不会连接到ec2 mongodb实例

  •  1
  • Jeremy M.  · 技术社区  · 7 年前

    我正在尝试创建一个节点。连接到托管在ec2实例上的mongodb的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]' }
    

    我的连接字符串是百分之百确定的工作。我的mongoose版本与我的mongodb版本配合得很好。有什么想法吗?:)

    PS:27017上的端口已打开,并且已经有一个aws实例在使用我的mongodb。所以我相信这是可行的。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Ridham Tarpara    7 年前

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

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

        2
  •  0
  •   Jeremy M.    7 年前

    知道了。我无法从本地主机连接到mongodb服务器(不知道为什么),但当我从ec2实例连接到mongodb服务器时,它可以工作。所以很好:)