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

使用spring-boot-starter-parent 2.0.0时出现MongoSocketOpenException异常

解决Spring Boot 2.0.0.RELEASE连接MongoDB时的MongoSocketOpenException问题

我来帮你排查这个连接错误,MongoSocketOpenException本质上就是你的Spring Boot应用没法成功和MongoDB实例建立socket连接,结合你用的2.0.0.RELEASE版本,给你几个实用的排查方向:

  • 先确认MongoDB服务是否在运行
    如果是本地部署的MongoDB,先检查服务状态:

    • Windows:打开服务列表,找到MongoDB服务看是否处于启动状态
    • Mac/Linux:终端执行systemctl status mongod(systemd系统)或者直接运行mongod命令启动服务
      同时可以用netstat -an | grep 27017(Linux/Mac)或者netstat -ano | findstr 27017(Windows)确认默认的27017端口是否在监听。
  • 核对Spring Boot的MongoDB配置
    Spring Boot 2.0.x默认会尝试连接localhost:27017,如果你的MongoDB不在本地、改了端口,或者需要指定数据库,一定要在配置文件里明确设置:
    比如application.properties:

    spring.data.mongodb.host=你的MongoDB地址
    spring.data.mongodb.port=你的端口号(默认27017)
    spring.data.mongodb.database=要连接的数据库名
    

    要是用的是MongoDB Atlas这类云服务,直接配置uri更方便:

    spring.data.mongodb.uri=mongodb+srv://用户名:密码@集群地址/数据库名?retryWrites=true&w=majority
    
  • 检查防火墙和网络权限

    • 本地环境:确认防火墙没有拦截27017端口,必要时临时关闭防火墙测试
    • 远程MongoDB(比如云服务):要确保MongoDB实例的IP白名单包含你的应用所在IP,否则会被拒绝连接
  • 验证依赖与MongoDB版本兼容性
    Spring Boot 2.0.0.RELEASE对应的MongoDB驱动核心版本是3.6.3,这个版本和MongoDB 3.4、3.6、4.0版本都兼容,但如果你的MongoDB服务器是2.x或者5.x+,可能会出现兼容性问题,尽量让服务器版本和驱动版本不要差太远。

  • 直接测试MongoDB连接
    先用MongoDB自带的客户端工具(比如mongo命令行或者MongoDB Compass)尝试连接目标MongoDB实例,如果工具都连不上,那问题出在MongoDB本身,先解决服务器的问题再回头看应用。

你的错误堆栈信息如下:

com.mongodb.MongoSocketOpenException: Exception opening socket
at com.mongodb.connection.SocketStream.open(SocketStream.java:62) ~[mongodb-driver-core-3.6.3.jar:na]
at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:126) ~[mongodb-driver-core-3.6.3.jar:na]
at com.mongod...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:28:45