MongoDB 找不到合适的服务器
MongoDB no suitable servers found
我无法连接到副本集。
[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 进行连接
将任何本地主机引用切换到 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
注意 1: 从命令行访问 mongo 时,您现在必须指定主机。
mongo --host=coolname
注意 2: 您还必须将对 localhost 或 127.0.0.1 的任何引用更改为您的新名称。
$client = new MongoDB\Client("mongodb://coolname:27017");
我在基于 docker 的设置中遇到了同样的错误:
container1: nginx
侦听端口 80
container2: php-fpm
侦听端口 9000
container3: mongodb
侦听端口 27017
nginx
转发 php 到 php-fpm
尝试从 php
访问 mongodb
出现此错误。
在 mongodb
Dockerfile 中,罪魁祸首是:
CMD ["mongod", "--bind_ip", "127.0.0.1"]
需要更改为:
CMD ["mongod", "--bind_ip", "0.0.0.0"]
错误消失了。希望这对某人有所帮助。
在我的例子中,我在我的 VPS 运行 Linux Debian 9 上暂时从 Windows7 对 MongoDB 编码 PHP . PHP 最终将 运行 在同一个 Linux 框中,为 MongoDB 数据提供 API。
顺便说一句,这个本地作曲家安装似乎对我没有任何好处,它纯粹是丑陋的。我的 PHP 在下面的修复后没有 require 行 require_once 'C:\Users\<Windows User Name>\vendor\autoload.php'
.
我的修复与接受的答案不同,后者对我来说没有意义。
我没有接触任何主机文件
所以用你的目标机器的 IP 编辑你的 /etc/mongod.conf
并用 sudo systemctl restart mongod
重新启动就是这样
不知道该怪什么
- PHP 和 MongoDB 糟糕的文档站点 PHP 示例,或者...
- MongoDB 在 Linux 上的安装未能提及此 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 和任何区分大小写的东西说 NO……荒谬至极。
您家庭网络的 IP 地址可能已更改,这会导致 MongoDB 将您锁定。
我自己解决了这个问题,方法是转到 MongoDB Atlas 并更改允许连接到我的数据的 IP 地址。最初,我将其设置为仅允许来自我的家庭网络的连接。但是我的家庭网络IP地址变了,我开始收到和你一样的错误信息。
要检查您是否遇到同样的问题,请转至 MongoDB Atlas,进入您的项目,然后单击屏幕左侧的“网络访问”。这是您可以更新 IP 地址的地方。它会向您显示它允许进入的 IP 地址。要了解您当前的 IP 地址是什么,请转到 whatismyipaddress.com 并更新 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 进行连接
将任何本地主机引用切换到 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
注意 1: 从命令行访问 mongo 时,您现在必须指定主机。
mongo --host=coolname
注意 2: 您还必须将对 localhost 或 127.0.0.1 的任何引用更改为您的新名称。
$client = new MongoDB\Client("mongodb://coolname:27017");
我在基于 docker 的设置中遇到了同样的错误:
container1:
nginx
侦听端口 80container2:
php-fpm
侦听端口 9000container3:
mongodb
侦听端口 27017
nginx
转发 php 到 php-fpm
尝试从 php
访问 mongodb
出现此错误。
在 mongodb
Dockerfile 中,罪魁祸首是:
CMD ["mongod", "--bind_ip", "127.0.0.1"]
需要更改为:
CMD ["mongod", "--bind_ip", "0.0.0.0"]
错误消失了。希望这对某人有所帮助。
在我的例子中,我在我的 VPS 运行 Linux Debian 9 上暂时从 Windows7 对 MongoDB 编码 PHP . PHP 最终将 运行 在同一个 Linux 框中,为 MongoDB 数据提供 API。
顺便说一句,这个本地作曲家安装似乎对我没有任何好处,它纯粹是丑陋的。我的 PHP 在下面的修复后没有 require 行 require_once 'C:\Users\<Windows User Name>\vendor\autoload.php'
.
我的修复与接受的答案不同,后者对我来说没有意义。
我没有接触任何主机文件
所以用你的目标机器的 IP 编辑你的 /etc/mongod.conf
并用 sudo systemctl restart mongod
重新启动就是这样
不知道该怪什么
- PHP 和 MongoDB 糟糕的文档站点 PHP 示例,或者...
- MongoDB 在 Linux 上的安装未能提及此 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 和任何区分大小写的东西说 NO……荒谬至极。
您家庭网络的 IP 地址可能已更改,这会导致 MongoDB 将您锁定。
我自己解决了这个问题,方法是转到 MongoDB Atlas 并更改允许连接到我的数据的 IP 地址。最初,我将其设置为仅允许来自我的家庭网络的连接。但是我的家庭网络IP地址变了,我开始收到和你一样的错误信息。
要检查您是否遇到同样的问题,请转至 MongoDB Atlas,进入您的项目,然后单击屏幕左侧的“网络访问”。这是您可以更新 IP 地址的地方。它会向您显示它允许进入的 IP 地址。要了解您当前的 IP 地址是什么,请转到 whatismyipaddress.com 并更新 MongoDB(如果不同)。