2016-02-04 91 views
0

我在嘗試將我的節點js服務器連接到我的EC2實例上的mongo數據庫時遇到了很多麻煩。在AmazonEC2上使用mongoose連接到mongo db數據庫

我使用碼頭。

我有一個mongo的容器。我遵循這個過程:http://pierrepironin.fr/docker-et-mongodb/

我能夠通過docker exec連接到它,我可以在我的數據庫上做所有事情。

我沒有設法做的是在我的節點js應用程序連接到它。我用貓鼬在這裏這個我用來連接代碼蒙戈:

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); 
    }); 
}); 
}; 

我有幾個不同的URL嘗試,但沒有一個人工作,我每次都得到了這樣一個錯誤:

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:[email protected]:27017/my-database" 

我也嘗試用我的EC2實例IP替換0.0.0.0。

有人知道我在做什麼錯嗎? 如何連接到我的mongo?哪個網址?

謝謝你! :)

回答

0

很可能您的實例的防火牆阻止傳入的請求。爲了連接到您的數據庫,您將需要輸入實例的正確IP地址(公共IP),並確保端口處於打開狀態 - 在AWS中,此位於「安全組」和「入站」下面

0.0.0.0在您已閱讀的文檔中被用作服務器「偵聽」的地址,0.0.0.0意味着它「對世界開放」,這通常不是理想的,您將在稍後在您的mongod.conf

+0

感謝它現在的工作! –

+0

很高興聽到它:)你能標記我的答案是「正確的」? –