pymongo执行CRUD时报[Errno 111] Connection refused错误如何解决?
问题原理说明
pymongo的MongoClient采用懒加载机制,初始化客户端、打印数据库对象时不会实际发起网络连接,只有执行CRUD这类需要和服务端交互的操作时才会真正尝试建立TCP连接,因此你之前看到的print(db)正常输出不代表实际连接成功。
故障解决步骤
- 确认MongoDB服务是否已正确安装
执行mongod --version检查版本输出,若提示命令不存在,先重新安装MongoDB服务。 - 查看启动失败的具体日志
MongoDB默认日志路径为/var/log/mongodb/mongod.log,执行以下命令查看最近的报错信息,定位启动失败原因:
常见启动失败原因包括:27017端口被占用、数据存储目录权限异常、配置文件语法错误。sudo tail -n 50 /var/log/mongodb/mongod.log - 修复数据目录权限
若日志提示权限相关报错,执行以下命令修复默认数据目录的权限:sudo chown -R mongodb:mongodb /var/lib/mongodb sudo chmod -R 755 /var/lib/mongodb - 重新启动服务并验证状态
权限修复后执行启动命令:
启动完成后执行sudo systemctl start mongodsystemctl status mongod查看状态,若显示active (running)则服务启动成功。 - 验证端口监听状态
执行以下命令确认27017端口被MongoDB正常监听:
有对应输出说明端口正常监听,此时重新运行你的Python代码即可正常执行CRUD操作。sudo lsof -i:27017
内容的提问来源于stack exchange,提问作者PU L
相关产品推荐
相关产品推荐

