【发布时间】:2016-09-02 18:14:40
【问题描述】:
我正在从我的本地主机创建一个 javascript meteor 应用程序,但我希望我的数据库存储在单独的 aws 服务器上。
我是 MongoDB 和 aws 的新手。我想知道如何从本地主机连接到我的数据库?
【问题讨论】:
标签: javascript mongodb amazon-web-services meteor
我正在从我的本地主机创建一个 javascript meteor 应用程序,但我希望我的数据库存储在单独的 aws 服务器上。
我是 MongoDB 和 aws 的新手。我想知道如何从本地主机连接到我的数据库?
【问题讨论】:
标签: javascript mongodb amazon-web-services meteor
这就像启动 Meteor 应用程序一样简单,将 MONGO_URL 环境变量设置为指向在您的 AWS 机器上运行的 Mongo 实例。
假设你已经在远程机器上打开了 27017 端口:
MONGO_URL=mongodb://addresshere.compute-1.amazonaws.com:27017/yourdbname meteor
【讨论】:
ssh aws-host -L 27017:localhost:27017,或者,如果您通过不同的实例连接ssh aws-host -L 2017:target.mongo.host.amazonaws.com:27017。
每个this link 你可能想检查一下 1) 操作系统防火墙; 2)正确的服务绑定到私有IP地址(如果没有,将您的IP添加到IP地址白名单中; 3)你的猫鼬版本(如果使用)。使用 'npm list mongoose' 找出版本,并将其更新到最新版本。
您可以使用 Mongodb Atlas (一种“在 Amazon Web Services (AWS) 上提供的 MongoDB 即服务产品”)来托管您的数据库(它有一个免费套餐可供启动),并使用 MongoDB Compass 轻松管理您的数据.
【讨论】:
您可以使用猫鼬连接它。
var mongoose = require('mongoose');
mongoose.connect('mongodb://serverIpaddress/databasename', function (err) {
if (err) {
return "no"
} else {
console.log('connection successful');
}
});
【讨论】:
为了能够通过 Internet 连接外部 mongodb。应满足以下条件:
如果 mongodb 没有公共 IP(VPC 内的私有网络),您的 localhost 仍然可以使用以下方法之一访问它:
无论如何 - 在开始编写代码之前:尝试使用 telnet、netcat 或一些 working 连接到 mongodb mongodb 客户端。
【讨论】:
除了将应用程序配置为连接到远程 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 网络内的资源在本地可用)。
【讨论】: