我的计算机中本地托管了一个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建立连接。
答案 0 :(得分:5)
MongoDB使用TCP
而不是HTTP
。
ngrok tcp 27017
(请注意tcp
,而不是我认为您使用的http
)
在使用TCP时,由于某些原因,您需要执行几个额外的步骤,而当您尝试上述命令时,ngrok会提示您并告诉您需要做什么。
ngrok authtoken 123ABC456ETC
)ngrok tcp 27017
)