使用Amazonco2上的mongoose连接到mongo db数据库

时间:2016-02-04 14:05:16

标签: node.js mongodb amazon-ec2 mongoose

我在尝试将我的节点js服务器连接到我的EC2实例上的mongo数据库时遇到了很多麻烦。

我使用的是docker。

我有一个mongo容器。我遵循了这个程序:http://pierrepironin.fr/docker-et-mongodb/

我可以通过docker exec连接到它,我可以在我的数据库上做所有事情。

我没有设法做的是在我的节点js app中连接它。我使用mongoose,这里是我用来连接mongo的代码:

exports.mongoConnection = function(mongo_url){
mongoose.connect(mongo_url); 
mongoose.connection.on('connected', function () {  
    logger.info('Mongoose default connection open to ' + mongo_url);
}); 

// If the connection throws an error
mongoose.connection.on('error',function (err) {  
    logger.info('Mongoose default connection error: ' + err);
    logger.info("DB PATH : " + mongo_url);
}); 

// When the connection is disconnected
mongoose.connection.on('disconnected', function () {  
    logger.info('Mongoose default connection disconnected'); 
});

// If the Node process ends, close the Mongoose connection 
process.on('SIGINT', function() {  
    mongoose.connection.close(function () { 
    logger.info('Mongoose default connection disconnected through app termination'); 
    process.exit(0); 
  }); 
}); 
};

我尝试了几个不同的网址,但没有人工作,我每次都遇到这样的错误:

Mongoose default connection error: MongoError: connect ECONNREFUSED 0.0.0.0:27017

以下是我尝试但未奏效的一些网址:

"mongodb://localhost:27017/test"
"mongodb://0.0.0.0:27017/test"

我还尝试使用我为其中一个数据库创建的用户密码。

"mongodb://my-user:my-password@0.0.0.0.0:27017/my-database" 

我也尝试用我的EC2实例IP替换0.0.0.0。

有人知道我在做错了什么吗? 我怎样才能连接到我的mongo?使用哪个URL?

谢谢! :)

1 个答案:

答案 0 :(得分:0)

您的实例防火墙很可能阻止了传入的请求。为了连接到您的数据库,您需要输入实例的正确IP地址(公共IP)并确保端口是开放的 - 在AWS中,这是在"安全组"和"入境"

您阅读的文档中的

0.0.0.0用作服务器的地址"侦听" to,0.0.0.0意味着它开放给世界",这通常是不理想的,你想在以后的mongod.conf