【问题标题】:Can connect locally but not remotely可以本地连接但不能远程连接
【发布时间】:2014-05-08 20:37:27
【问题描述】:

我在将我的 php 客户端连接到我的 mongodb 服务器时遇到问题。

基本上,我在我的服务器(托管在美国)上安装了 MongoDB,当我通过 ssh 连接到它时,我可以在本地连接到它。

但我无法从我的 php 客户端远程连接到此服务器,这是我得到的错误:

致命错误:在 /var/www/pages/news.php:9 中未捕获异常“MongoConnectionException”,并带有消息“无法连接到:xxx.xxx.xxx.xxx:27017:连接被拒绝”堆栈跟踪:#0 /var/www/pages/news.php(9): MongoClient->__construct('mongodb://xxx.xxx...') #1 {main} 在 /var/www/pages/news.php 中抛出第 9 行

我使用它是为了从我的 php 客户端创建连接:

$m = new MongoClient("mongodb://xxx.xxx.xxx.xxx");

我的远程服务器是 Ubuntu 12.04,我已经在 iptables 中添加了 INPUT 和 OUTPUT 规则以允许端口 27017 的流量。

我真的不知道问题出在哪里? (我没有向我的 mongodb 实例添加任何身份验证凭据,它是用于测试目的的新凭据)。

如果有人遇到同样的问题并找到解决方案,那可能会有所帮助,谢谢!

【问题讨论】:

  • 如果连接仍然显示被拒绝,我仍然会尝试从您的本地到该端口上的 IP 的基本 telnet 命令,看看它是否对您可用。那你就知道是不是连通性了
  • 我刚尝试使用 telnet,连接也被拒绝:/
  • 听起来您的远程服务器不接受该端口上的流量。您必须先确认您可以获得出站连接,然后才能访问。您可以通过 ssh 访问它,因此您知道该端口至少是开放的
  • 谢谢 Ricky,我可以看到 ssh 的端口 22 在 /etc/services 中,我应该为 mongod 添加相同的:27017 吗?
  • 我会尝试遵循以下内容:docs.mongodb.org/manual/tutorial/…

标签: php mongodb connection database-connection


【解决方案1】:

好的,发现问题了:

我输入这个命令是为了显示监听服务和它们对应的端口:

netstat -anltp | grep "LISTEN"

我看到 SSH 正在侦听 IP : 0.0.0.0 但是 mongod 正在监听本地接口 127.0.0.1

我只需要在这里更新 mongodb 配置文件:

/etc/mongodb.conf 并将参数“bind_ip”设置为:0.0.0.0 并取消注释“端口”字段以使用默认值:27017。

因此,现在我可以从客户端连接到服务器上的 mongod 实例。 希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 2018-07-26
    • 2017-10-27
    • 2021-03-24
    • 2011-03-16
    相关资源
    最近更新 更多