我在尝试将我的节点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?
谢谢! :)
答案 0 :(得分:0)
您的实例防火墙很可能阻止了传入的请求。为了连接到您的数据库,您需要输入实例的正确IP地址(公共IP)并确保端口是开放的 - 在AWS中,这是在"安全组"和"入境"
您阅读的文档中的 0.0.0.0
用作服务器的地址"侦听" to,0.0.0.0意味着它开放给世界",这通常是不理想的,你想在以后的mongod.conf
}