【问题标题】:Connect to MongoDB on aws Server From Another Server从另一台服务器连接到 aws 服务器上的 MongoDB
【发布时间】:2016-09-02 18:14:40
【问题描述】:

我正在从我的本地主机创建一个 javascript meteor 应用程序,但我希望我的数据库存储在单独的 aws 服务器上。

我是 MongoDB 和 aws 的新手。我想知道如何从本地主机连接到我的数据库?

【问题讨论】:

标签: javascript mongodb amazon-web-services meteor


【解决方案1】:

这就像启动 Meteor 应用程序一样简单,将 MONGO_URL 环境变量设置为指向在您的 AWS 机器上运行的 Mongo 实例。
假设你已经在远程机器上打开了 27017 端口:

MONGO_URL=mongodb://addresshere.compute-1.amazonaws.com:27017/yourdbname meteor

【讨论】:

  • 谢谢,但由于某种原因,当我尝试从 localhost 连接时出现错误。错误:无法连接到 [address.compute-1.amazonaws.com:27017]
  • 我写的连接字符串只是一个占位符。你必须使用你的
  • 对。我也试过 MONGO_URL=mongodb://xx-xx-xxx-xx.us-west-2.compute.amazonaws.com/meteor meteor ,我得到了同样的错误。所有交通都是开放的。是否可能是因为我试图连接到由流星创建的 aws 服务器上的数据库?
  • 遇到了同样的错误。基本上,mongodb 位于 AWS 后面的 VPC 后面,您通常通过 ssh 连接到该 VPC。所以我真的不知道如何让我的应用程序仅通过使用上面的行来访问 mongodb,但我认为,用户名和密码是不够的。
  • 不确定,但希望有所帮助:通常有两种方法可以访问 AWS 上的资源 - 1) 更改 EC2 实例的“安全组”配置 - 这充当防火墙 - 并允许访问端口 27017; 2) 使用 ssh 隧道连接到实例并在本地调整该端口,例如ssh aws-host -L 27017:localhost:27017,或者,如果您通过不同的实例连接ssh aws-host -L 2017:target.mongo.host.amazonaws.com:27017
【解决方案2】:

每个this link 你可能想检查一下 1) 操作系统防火墙; 2)正确的服务绑定到私有IP地址(如果没有,将您的IP添加到IP地址白名单中; 3)你的猫鼬版本(如果使用)。使用 'npm list mongoose' 找出版本,并将其更新到最新版本。

您可以使用 Mongodb Atlas (一种“在 Amazon Web Services (AWS) 上提供的 MongoDB 即服务产品”)来托管您的数据库(它有一个免费套餐可供启动),并使用 MongoDB Compass 轻松管理您的数据.

【讨论】:

    【解决方案3】:

    您可以使用猫鼬连接它。

    var mongoose = require('mongoose');

    mongoose.connect('mongodb://serverIpaddress/databasename', function (err) {
        if (err) {
           return "no"
        } else {
            console.log('connection successful');
    
        }
    });
    

    【讨论】:

      【解决方案4】:

      为了能够通过 Internet 连接外部 mongodb。应满足以下条件:

      • mongodb 应该有可路由的公共 IP
      • mongodb security-group应该白名单你的公共IP

      如果 mongodb 没有公共 IP(VPC 内的私有网络),您的 localhost 仍然可以使用以下方法之一访问它:

      • VPN 到专用网络
      • 您的办公室/家庭与 AWS VPC 之间的站点到站点
      • 将 EIP 附加到 mongodb 实例 eni(如果 eni 具有通过 Internet 网关 路由的公共子网)
      • 使用公共 IP 创建一个 eni 添加附加到 mongodb 实例

      无论如何 - 在开始编写代码之前:尝试使用 telnetnetcat 或一些 working 连接到 mongodb mongodb 客户端。

      【讨论】:

        【解决方案5】:

        除了将应用程序配置为连接到远程 MongoDB,如其他答案中所述,还需要确保可以从您的网络访问服务器。

        有多种方式可以访问 AWS 上的网络资源:

        • 更改 EC2 实例的 security group 配置 - 这充当防火墙 - 并允许访问端口 27017。 如果您只需要从您的机器访问它,可以选择允许从您当前的 IP 访问。

        • 使用 ssh 隧道连接到实例并让该端口在本地建立隧道,例如 ssh aws-host -L 27017:localhost:27017,或者,如果您通过不同的实例连接 ssh aws-host -L 2017:target.mongo.host.amazonaws.com:27017。 关于这个主题有一个很好的演示 - The Black Magic Of SSH / SSH Can Do That?

        • 使用 VPN on AWS 并通过 VPN 连接到 AWS 网络(使 AWS 网络内的资源在本地可用)。

        【讨论】:

        • ssh 端口转发有帮助(没有 IP 表是的!)有关 aws 设置,请参阅 17:00 分钟的视频
        猜你喜欢
        • 2023-03-23
        • 2017-12-17
        • 1970-01-01
        • 1970-01-01
        • 2016-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多