使用ngrok隧道mongodb

时间:2019-07-26 12:56:02

标签: mongodb authentication ngrok

我的计算机中本地托管了一个MongoDb,并在端口localhost:27017上成功运行。该数据库具有一个用户名和密码,以及一个名为“ testDb”的集合。在代码中,我能够使用localhost成功访问数据库。

我正在尝试使用ngrok从远程桌面访问此MongoDb。我已经实现了端口转发,并且在命令提示符下显示以下响应。

转发https://5e825c82.ngrok.io-> http://localhost:27017

我也尝试过更改端口=> 转发https://5e825c82.ngrok.io-> http://localhost:28017

两个端口均失败,并显示以下错误消息: 与http://5e825c82.ngrok.io的连接已成功通过隧道传输到您的ngrok客户端,但是该客户端无法建立与本地地址localhost:28017的连接。 确保Web服务正在localhost:28017上运行,并且它是有效地址。 遇到的错误是:Dial tcp [:: 1]:28017:connectex:由于目标计算机主动拒绝连接,因此无法建立连接。

// Works fine
MongoClient client = new MongoClient("mongodb://admin:admin@localhost:27017/testDb");

// Fails:
MongoClient client = new MongoClient("mongodb://admin:admin@5e825c82.ngrok.io/testDb");

我想知道如何使用ngrok与MongoDb建立连接。

1 个答案:

答案 0 :(得分:5)

MongoDB使用TCP而不是HTTP

尝试以下命令:

ngrok tcp 27017

(请注意tcp,而不是我认为您使用的http


在使用TCP时,由于某些原因,您需要执行几个额外的步骤,而当您尝试上述命令时,ngrok会提示您并告诉您需要做什么。

  1. https://dashboard.ngrok.com/get-started上注册一个ngrok帐户
  2. 在本地运行此页面上显示的命令 3。连接您的帐户(例如ngrok authtoken 123ABC456ETC

enter image description here

  1. 现在再次尝试该命令(ngrok tcp 27017