MongoDB找不到合适的服务器

时间:2017-01-13 22:23:58

标签: php-mongodb

我无法连接到副本集。

[MongoDB\Driver\Exception\ConnectionTimeoutException]                                                                                                              
No suitable servers found (`serverSelectionTryOnce` set): 
[Server closed connection. calling ismaster on 'a.mongodb.net:27017'] 
[Server closed connection. calling ismaster on 'b.mongodb.net:27017']
[Server closed connection. calling ismaster on 'c.mongodb.net:27017']

但是,我可以使用MongoChef进行连接

4 个答案:

答案 0 :(得分:8)

将任何localhost引用切换为127.0.0.1对我有所帮助。 localhost和127.0.0.1之间存在差异

请参阅:localhost vs. 127.0.0.1

可以将MongoDB设置为在 UNIX套接字 TCP / IP

上运行

如果所有其他方法都失败了,我发现在所有情况下最为一致的是:

在您的主机文件中,请确保为您要使用的IP地址指定了名称(127.0.0.1除外)。

192.168.0.101 coolname

192.168.0.101 coolname.somedomain.com

在mongodb.conf中:

bind_ip = 192.168.0.101

重启Mongo

NOTE1:从命令行访问mongo时,您现在必须指定主机。

mongo --host=coolname

注意2:您还必须将对localhost或127.0.0.1的任何引用更改为新名称。

$client = new MongoDB\Client("mongodb://coolname:27017");

答案 1 :(得分:0)

在基于docker的设置中我遇到了相同的错误:

  • container1:nginx正在监听端口80

  • container2:php-fpm正在监听端口9000

  • container3:mongodb监听端口27017

nginx将php转发到php-fpm

尝试从mongodb访问php时出现此错误。

mongodb Dockerfile中,罪魁祸首是:

CMD ["mongod", "--bind_ip", "127.0.0.1"]

需要将其更改为:

CMD ["mongod", "--bind_ip", "0.0.0.0"]

错误消失了。希望这对某人有帮助。

答案 2 :(得分:0)

就我而言,我是在运行Linux Debian 9的VPS上针对MongoDB暂时将Windows7的PHP编码。该PHP最终将在同一Linux机器中运行,以向MongoDB数据提供API。 顺便说一句,这个本地作曲家的安装似乎对我没有任何好处,这纯粹是丑陋的。以下修复程序之后的我的PHP不需要行require_once 'C:\Users\<Windows User Name>\vendor\autoload.php'

我的解决方案与接受的答案不同,对我来说这是没有道理的。

我不必触摸任何主机文件

因此,使用目标计算机的IP编辑/etc/mongod.conf,然后以sudo systemctl restart mongod重新启动

enter image description here

我不知道该怪什么

  1. PHP和MongoDB网站上糟糕的文档简短和不完整的PHP示例,或者...
  2. Linux上的MongoDB安装未能提及此bindIP。

到目前为止,我对MongoDB的启动体验非常负面,因为发生的所有更改均与我观看的视频所期望的不符。我似乎找不到能反映出我要经历的事情

$DB_CONNECTION_STRING="mongodb://user:password@164.152.09.84:27017"
$m = new MongoDB\Driver\Manager( $DB_CONNECTION_STRING ) 

代替

$m = new MongoClient()

希望这对某人有帮助

PS。总是对分号,camelCAsE和任何区分大小写的内容……最好都说

答案 3 :(得分:0)

您的家庭网络的 IP 地址可能已更改,这将导致 MongoDB 将您锁定。

我通过转到 MongoDB Atlas 并更改允许连接到我的数据的 IP 地址为自己解决了这个问题。最初,我将其设置为仅允许来自我的家庭网络的连接。但是我的家庭网络 IP 地址发生了变化,我开始收到与您相同的错误消息。

要检查这是否与您相同,请转到 MongoDB Atlas,进入您的项目,然后单击屏幕左侧的“网络访问”。您可以在那里更新您的 IP 地址。它会向您显示它允许进入的 IP 地址。要了解您当前的 IP 地址,请访问 whatismyipaddress.com 并更新 MongoDB(如果不同)。