我有一个Lightsail AWS实例,并且运行了MEAN堆栈。我有一个在不同网络上运行的现有MEAN堆栈。目前,节点server.js连接到localhost以获取mongo位(在同一台机器上),而我想要做的就是将localhost替换为与我的AWS远程服务器上运行的mongo的连接。
我理解,出于安全原因,最好ssh隧道这个连接,我认为我很熟悉。
到目前为止,我所做的是:
在托管节点服务器(远程数据库)的计算机上的控制台中,我运行了:
ssh -L 8181:127.0.0.1:80 -i ~/LightsailDefaultPrivateKey-eu-west-2.pem bitnami@31.16.56.125 -N
然后我可以使用localhost:8181 / rockmongo ... yay从本地计算机浏览到RockMongo UI。
如果我然后运行以下内容:
ssh -L 8181:127.0.0.1:27017 -i ~/LightsailDefaultPrivateKey-eu-west-2.pem bitnami@31.16.56.125 -N
(27017是mongo端口)
然后尝试使用以下命令从我的远程计算机访问数据库:
mongo --username XXXXXX --password XXXXXX 31.16.56.125:8181/testdata
我收到以下错误:
〜] 2017-12-28T22:11:09.791 + 0000错误:无法连接到服务器31.16.56.125:8181(31.16.56.125),连接尝试在src / mongo / shell / mongo.js失败:148 异常:连接失败
我这样做错了吗? ie是仅用于http连接的隧道而不是mongo命令行使用?我是否需要以其他方式测试连接?
我为此搜索了所有地方并没有太多运气(许多AWS文档建议在防火墙上打一个洞 - 哪一个不能再做了!)
答案 0 :(得分:0)
好的我已经(部分)解决了这个问题,但有些事情是错误的。
1)mongo客户端为2.6,在AWS上运行的mongo为3.4。升级这解决了一些问题 - 因为我收到了更有意义的错误消息。
我遇到的一件事就是apt-get似乎执行了更新,但发出mongo命令时报告的版本仍为2.6。
要解决此问题,我必须运行sudo apt-get purge mongodb-org*
(注意星号)。然后执行更新....如果您需要这样做,请按照以下说明操作:
https://docs.mongodb.com/v3.2/tutorial/install-mongodb-on-ubuntu/
2)此命令
mongo --username XXXXXX --password XXXXXX 31.16.56.125:8181/testdata
因为我省略了' admin'从它而不是指定localhost!
但是
mongo admin --username XXXXXX --password XXXXXX localhost:8181/testdata
也不起作用,并提供以下输出。
2018-01-03T22:00:42.380+0000 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: errno:111 Connection refused
2018-01-03T22:00:42.380+0000 E QUERY [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:229:14
@(connect):1:6
我唯一可以上班的命令是:
mongo admin --username XXXXXX --password XXXXXX --port 8181
默认主机是localhost,所以在这种情况下它使用隧道,这也只是连接到测试数据库,然后你可以从那里管理。
我还没有找到主机的规格:port / db作为参数,根据运行mongo --help
的输出
usage: mongo [options] [db address] [file names (ending in .js)]
db address can be:
foo foo database on local machine
192.169.0.5/foo foo database on 192.168.0.5 machine
192.169.0.5:9999/foo foo database on 192.168.0.5 machine on port 9999