![无法从互联网访问 MongoDB](https://linux22.com/image/1385099/%E6%97%A0%E6%B3%95%E4%BB%8E%E4%BA%92%E8%81%94%E7%BD%91%E8%AE%BF%E9%97%AE%20MongoDB.png)
我使用的是 MongoDB 数据库,安装的 IP 地址是 126.22.252.25。Ubuntu 版本信息是 12.04.3 LTS。
我的 MongoDB 使用默认27017
端口。在这台本地机器上我可以使用mongo --host 126.22.252.25
本地机器上的命令来访问,但是我无法在任何其他 Linux 机器上使用此命令来访问 MongoDB,也无法telnet 126.22.252.25 27017
在我的 Windows 机器上使用此命令。
我确信126.22.252.25
机器可以从互联网访问,因为我可以使用winSCP
并secureCRT
登录它。如果我运行命令netstat -tnlp
,它会显示:
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN
我已经更改了/ect/mongodb.conf
文件,将bind_ip
参数从修改0.0.0.0
为126.22.252.25
。
我还可以做些什么?
答案1
位于绑定地址上意味着0.0.0.0
服务正在监听机器的所有可用接口。在这种情况下,不需要明确更改绑定IP(顺便说一下,这是你可以执行此操作)以匹配可访问的地址。
你更有可能遇到的问题是外部防火墙规则在您的托管提供商或您的网络上配置的端口。这些端口将被明确阻止,或者仅允许明确允许的流量与互联网外部世界通信。或者在另一种情况下,您甚至可能只是阻止了您尝试访问服务器的端口。
端口阻塞很常见,大多数管理员只开放典型端口的子集,如 http 等等。但拥有一项服务并不意味着你就能获得另一项服务。自由的。
因此你可能需要查看服务器和客户端访问端口可用的在两个都结束,以便您可以与 MongoDB 对话。
话虽如此,你可能不应该这样做,因为向世界公开你的数据库是一件非常馊主意。如果你确实需要工具来从远程位置进行连接,那么最好通过类似远程控制这将在允许的协议中得到更普遍的支持,并且更加安全。
答案2
尝试这个
第一种是使用非标准端口。这更像是一种混淆技术,意味着默认连接适配器将不起作用。
在 MongoDB 配置文件中,将以下行更改为 27017 以外的内容
port = 27017
其次,您需要将 Mongo 直接绑定到应用服务器的 IP 地址。将其设置为 127.0.0.1 将确保 Mongo 仅接受本地连接。
在 MongoDB 配置文件中,将以下行更改为应用程序服务器的 IP 地址
bind_ip = 127.0.0.1
最后,考虑使用 MongoDB 的身份验证功能并设置用户名和密码。要进行设置,请使用命令以管理员身份连接到 MongoDB shellmongo
并添加用户。完成后,请确保在 MongoDB 连接字符串中添加新添加的用户名/密码。