MongoDB IP有效性验证及PyMongo连接可行性确认
如何在PyMongo连接前验证MongoDB IP地址有效性
一、IP有效性验证方法
- 网络连通性检测:先用系统命令确认IP和端口的可达性
- 执行
ping 196.168.xxx.xxx,检查IP是否能正常响应 - 执行
telnet 196.168.xxx.xxx 27017或nc -zv 196.168.xxx.xxx 27017,验证MongoDB默认端口27017是否开放
- 执行
- 极简PyMongo测试脚本:写个带异常捕获的小脚本,直接测试连接能力,避免复杂代码直接报错
import pymongo from pymongo.errors import ConnectionFailure try: client = pymongo.MongoClient("mongodb://196.168.xxx.xxx:27017/", serverSelectionTimeoutMS=5000) # 强制触发连接检测 client.admin.command('ping') print("IP地址有效,MongoDB连接成功") except ConnectionFailure: print("IP地址无效,无法连接MongoDB")
二、MongoDB Compass报错原因说明
你遇到的 getaddrinfo ENOTFOUND mongodb 错误,是因为Compass默认使用了 mongodb://mongodb:27017/ 这类连接串,其中主机名写的是mongodb而非实际IP,系统无法解析这个主机名导致失败。把连接串里的mongodb替换成196.168.xxx.xxx就能正常连接。
三、你的PyMongo代码能否正常工作
已知NoSQLBooster能通过该IP正常连接,说明IP、端口、数据库权限(如果开启认证)都无问题,你的代码应该可以正常工作:
- 会列出当前MongoDB实例下的所有数据库(包括admin、cloud_db等)
- 会输出
Your DB: cloud_dbexsist!!!!(注意代码里{0}后少了空格,建议改成{0} exist!!!!)
不过原代码缺少异常处理,一旦连接失败会直接抛出未捕获的异常,建议优化为带异常处理的版本:
import pymongo from pymongo.errors import ConnectionFailure try: client = pymongo.MongoClient("mongodb://196.168.xxx.xxx:27017/") # 触发连接验证 client.admin.command('ping') mydb_Name = "cloud_db" mydb = client[mydb_Name] print("当前存在的数据库: ", client.list_database_names()) dblist = client.list_database_names() if mydb_Name in dblist: print(f"你的数据库: {mydb_Name} 已存在!!!!") except ConnectionFailure: print("无法连接到MongoDB,请检查IP地址、端口或网络状态")
内容的提问来源于stack exchange,提问作者j ton
相关产品推荐
相关产品推荐

