You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyMongo基础功能失效求助:ServerSelectionTimeoutError报错排查

解决MongoDB连接失败的ServerSelectionTimeoutError问题

我来帮你拆解这两个连接失败的问题,本质上都是客户端无法和MongoDB服务器建立有效连接,咱们一步步来解决:

先搞懂两个错误的核心原因

  • WinError 10049:你用的0.0.0.0是服务器端用来监听所有网卡的地址,不是客户端发起连接的有效地址;另外5001也不是MongoDB的默认端口,除非你特意修改过配置文件。
  • WinError 10061:目标机器主动拒绝连接,大概率是MongoDB服务没启动,或者你的连接地址/端口和服务实际运行的参数不匹配。

分步排查与解决

1. 先确认MongoDB服务正在运行

这是最容易忽略的点:

  • Windows用户可以按Win+R输入services.msc打开服务管理器,找到MongoDB相关服务(通常叫MongoDB Server),确保状态是正在运行。如果没运行,右键点击「启动」即可。
  • 如果没把MongoDB安装成服务,直接找到安装目录下的bin文件夹,运行mongod.exe(记得指定数据目录,比如mongod --dbpath D:\mongodb\data,不然会启动失败)。

2. 修正连接地址与端口配置

第一个案例的代码修正

把错误的监听地址和端口换成客户端可用的参数:

import pymongo

MONGO_DBNAME = 'db'
MONGO_HOST = 'localhost'  # 如果MongoDB和代码在同一机器,用这个;不在的话换成服务器实际IP
MONGO_PORT = 27017  # MongoDB默认端口,没改配置就用这个
MONGO_URI = f'mongodb://{MONGO_HOST}:{MONGO_PORT}/{MONGO_DBNAME}'

# 先加个连接测试,提前验证是否能连上
mongo = pymongo.MongoClient(MONGO_URI)
try:
    mongo.admin.command('ping')
    print("MongoDB连接成功!")
except Exception as e:
    print(f"连接失败:{e}")

data = mongo.db['data']
data.insert_one({'data':'0.0'})

第二个案例的排查方向

你代码里的MONGO_URI = 'mongodb://localhost:27017/robo'格式是对的,但拒绝连接说明:

  • 先确认MongoDB服务是否启动(步骤1);
  • 如果服务已经启动,检查MongoDB配置文件mongod.cfg里的net.bindIp项:如果它设置了特定IP(比如192.168.1.100),那你需要把代码里的localhost换成这个IP;测试环境可以改成0.0.0.0允许所有IP连接(生产环境要注意安全)。

3. 用MongoDB自带工具验证连接

先别着急改代码,用mongosh(新版)或者mongo(旧版)命令行工具测试连接是否正常:

mongosh "mongodb://localhost:27017"

如果能成功进入MongoDB shell,说明服务没问题,问题出在代码里;如果连shell都连不上,继续排查服务启动参数或防火墙。

4. 其他可能的坑

  • 防火墙拦截:Windows防火墙可能挡住了MongoDB的端口,需要在防火墙设置里添加允许27017端口(或你自定义的端口)的入站规则;
  • 认证配置:如果你的MongoDB开启了用户名密码认证,连接URI需要带上认证信息,格式是mongodb://用户名:密码@localhost:27017/数据库名。

内容的提问来源于stack exchange,提问作者Joshua Brewster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:17:24