我正在尝试从我的虚拟专用服务器和 Godaddy 上的共享托管帐户访问 MongoDB 上的数据库。我对 pymongo 遵循相同的安装步骤,并为两者添加了公共 IP。问题是,与数据库的连接对于虚拟专用服务器可以正常工作,但对于共享主机则不然,我会收到错误
[Errno 111] Connection refused
这是代码,仅隐藏连接字符串中的部分:
from requests import get
ip = get('https://api.ipify.org').content.decode('utf8')
print('My public IP address is: {}'.format(ip))
from pymongo.mongo_client import MongoClient
uri = "mongodb+srv://[email protected]/?retryWrites=true&w=majority&ssl=true&ssl_cert_reqs=CERT_NONE"
# Create a new client and connect to the server
client = MongoClient(uri)
# Send a ping to confirm a successful connection
try:
client.admin.command('ping')
print("Pinged your deployment. You successfully connected to MongoDB!")
except Exception as e:
print(e)
这是虚拟专用服务器的输出:
My public IP address is: 166.62.100.113 Pinged your deployment. You successfully connected to MongoDB!
这是共享主机的输出:
My public IP address is: 198.71.231.19 XXXX.mongodb.net:27017: [Errno 111] Connection refused,XXXX.mongodb.net:27017: [Errno 111] Connection refused,XXXX.mongodb.net:27017: [Errno 111] Connection refused
我确保两个 IP 都已添加到访问列表中。
那么,问题是,如何调试连接并知道是什么原因导致连接被拒绝?也许我应该添加 GoDaddy 的某种防火墙或代理?任何帮助将非常感激。
您的托管服务器可能会阻塞 mongodb 端口。
要进行调试,请连接到服务器上的 shell,并使用
mongosh
/ mongo
和连接字符串进行测试。如果它连接了,您的程序很可能也会连接。