从 MEAN 堆栈应用程序连接到 AWS 上的 MongoDB 运行

Connecting from MEAN stack app to MongoDB running on AWS

我正在构建 MEAN 堆栈应用程序。我在 AWS 上有 mongodb 运行 并使用 Robo 3T 连接到它。

所以我试图在我正在构建的 express angular 应用程序中编写连接代码。但是,无论我如何键入连接,我都会收到连接超时错误。所以我需要帮助。现在在 Robo 3t 中,我连接到它的方式只是使用本地主机,然后是我的 ssh 密钥信息,它连接到数据库。

这是我的 server.js 这部分代码: // server.js

const express = require('express'),
    path = require('path'),
    bodyParser = require('body-parser'),
    cors = require('cors'),
    mongoose = require('mongoose'),
    config = require('../config/DB');

    mongoose.Promise = global.Promise;
    mongoose.connect(config.DB).then(
      () => {console.log('Database is connected') },
      err => { console.log('Can not connect to the database'+ err)}
    );  

如您所见,我已将连接字符串的变量代码存储在一个 DB.js 文件中,其变量为 DB。

// DB.js

module.exports = {
  DB: 'mongodb://serveripaddres:27017/databasename'
};

正如您在上面看到的,我已经删除了数据库的 IP 地址以及我通常知道的数据库名称,您还可以在此字符串中包含管理员用户名密码。但是我这样做的尝试也失败了。谁能告诉我我做错了什么。

哦,应用程序在单独的服务器上运行,然后在数据库上运行。我意识到是的,将这些项目都设置在同一台服务器上可能会更容易,但这不是我想要的结构。

谢谢!

出于安全原因,将您的计算机 IP 地址添加到您的 aws 中,这就是为什么被拒绝的原因。并检查凭据。

如果安全端口允许来自其他实例的流量,那么就是配置问题。

执行以下操作

编辑您的 MongoDB 配置文件。在 Ubuntu:

sudo vim /etc/mongod.conf

查找 net 行并注释掉其下的 bindIp 行,该行当前限制 MongoDB 到本地主机的连接:

确保在您的 /etc/mongodb.conf 文件中有以下行,

bind_ip = 0.0.0.0

现在重启mongodb

sudo service mongod restart