【发布时间】:2015-09-10 22:22:37
【问题描述】:
我已经设置了一个运行在外部主机服务器上的 mongodb 服务器,我可以通过在客户端计算机 shell 中执行以下操作轻松连接 mongo 客户端:
162.243.27.34 --port 27017
但是当我尝试使用 python 使用 pymongo 连接到服务器时,我得到以下输出
import pymongo
client = pymongo.MongoClient('162.243.27.34', 27017)
错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 352, in __init__
raise ConnectionFailure(str(e))
pymongo.errors.ConnectionFailure: could not connect to 162.243.27.34:27017: [Errno 111] Connection refused
我在这里做错了什么?
更新 - 更多信息
IP 162.243.27.34 上的数据库服务器和客户端是具有不同 IP 的单独服务器。在上述两种情况下的示例中,我都尝试从远程客户端服务器进行连接,而不是连接到“localhost”。
数据库服务器上有防火墙,但客户端确实可以访问,并且由于 mongo 客户端命令行程序从客户端服务器连接良好,我假设从客户端连接到数据库服务器没有网络问题,而是我使用python连接的方式存在问题。
更新 2
运行命令:
cat /etc/mongodb.conf
显示:
bind_ip = 127.0.0.1
#port = 27017
我也在使用 MongoDB shell 版本:2.0.4
【问题讨论】:
-
您是在本地还是远程从 shell 连接。那么,
mongod正在运行的同一服务器实例上的 shell 连接是吗?如果是这样,那么您是否使用了相同的 IP 地址或本地主机(127.0.0.1)? -
@NeilLunn 感谢您的回复,我在问题中添加了一些细节
-
好吧,说清楚。您正在使用 same IP 地址从您尝试从中运行 python 应用程序的 same 客户端进行连接。那是对的吗?还可以在 mongo 服务器上尝试
ps aux | grep mongod和/或在使用的配置文件中查找bind_ip。确保它与您发布的内容没有什么不同,或者是0.0.0.0 -
正确我使用 python 和“mongo”命令行客户端从同一个 IP 连接。这是您发送给我的命令在数据库服务器上运行的输出,
mongodb 1184 0.4 3.1 639596 15936 ? Ssl Mar18 5:47 /usr/bin/mongod --config /etc/mongodb.conf jon 3148 0.0 0.1 9392 888 pts/0 S+ 06:51 0:00 grep mongod我没有看到任何绑定 ip,我做错了什么吗? -
使用
cat /etc/mongodb.conf并使用找到的 bind_ip 值编辑您的问题,或者如果它不存在,请不要打扰。从 shell 连接时显示的版本也是如此。