news 2026/6/6 17:08:25

MySQL 能连,Java 却连不上?一次真实服务器部署踩坑总结(IPv6 问题)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 能连,Java 却连不上?一次真实服务器部署踩坑总结(IPv6 问题)

目录

一、问题背景

二、典型错误日志

三、第一反应:常规排查(但都没用)

1️⃣ 数据库是否存活

2️⃣ 网络是否连通

3️⃣ 配置是否正确

4️⃣ Java 服务是否真的跑在目标服务器

四、真正的原因:JVM 默认使用 IPv6,而 MySQL 只监听 IPv4

🔥 真正的根因其实在这里:

发生了什么?

为什么 mysql 命令行没问题?

五、最终解决方案(关键一步)

✅ 强制 JVM 使用 IPv4

六、为什么这个问题特别“迷惑新人”

七、这个问题的“识别特征”(以后看到就秒懂)

八、推荐的生产级 Java 启动模板

九、总结


一、问题背景

在服务器上部署 Java 后端服务时,遇到了一个非常诡异但又极其常见的问题:

  • ✅ 在服务器上使用mysql命令行可以正常连接数据库

  • ❌ Java 后端程序启动后,所有涉及数据库的接口全部失败

  • ❌ 登录接口直接报错,页面无法跳转

  • ❌ 日志中反复出现:

Communications link failure The last packet sent successfully to the server was 0 milliseconds ago Connection refused

一开始几乎把所有常规排查方向都检查了一遍,但问题依旧存在。


二、典型错误日志

核心异常如下(节选):

Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. Caused by: java.net.ConnectException: Connection refused

出错位置在 MyBatis 查询阶段,例如:

UserMapper.selectByUsername

三、第一反应:常规排查(但都没用)

当时依次排查了下面这些点:

1️⃣ 数据库是否存活

systemctl status mysqld

✅ 正常


2️⃣ 网络是否连通

mysql -h 192.168.8.101 -u ivos -p

✅ 可以成功进入 MySQL


3️⃣ 配置是否正确

spring.datasource.url=jdbc:mysql://192.168.8.101:3306/ivos spring.datasource.username=ivos spring.datasource.password=******

✅ IP、端口、库名、账号都没问题


4️⃣ Java 服务是否真的跑在目标服务器

ps -ef | grep java ss -antulp | grep 8080

✅ Java 服务确实运行在javaserver


👉到这里就开始迷惑了:

明明服务器能连数据库,
明明 Java 就在这台服务器上,
为什么程序死活连不上?


四、真正的原因:JVM 默认使用 IPv6,而 MySQL 只监听 IPv4

🔥 真正的根因其实在这里:

mysql 命令行 ≠ Java 程序
它们走的是完全不同的网络栈


发生了什么?

  1. MySQL 实际监听的是 IPv4:

0.0.0.0:3306
  1. Java(JDK 8 + MySQL Connector/J 8.x)在 Linux 上:

    • 默认优先使用 IPv6

    • 即使你写的是 IPv4 地址(如192.168.8.101

  2. 结果是:

    • JVM 尝试用 IPv6 连接 MySQL

    • MySQL 没监听 IPv6

    • TCP 连接在第一步就被拒绝

    • 抛出Connection refused


为什么 mysql 命令行没问题?

因为:

  • mysql客户端默认走 IPv4

  • 不受 JVM 网络策略影响


五、最终解决方案(关键一步)

✅ 强制 JVM 使用 IPv4

停止原有 Java 进程后,用下面方式启动:

nohup java -Djava.net.preferIPv4Stack=true \ -jar ivos-0.0.1-SNAPSHOT.jar \ > ivos.log 2>&1 &

启动后:

  • 登录接口恢复正常

  • 所有数据库操作全部成功

  • 问题彻底解决 🎉


六、为什么这个问题特别“迷惑新人”

因为你已经做了所有“看起来正确”的验证

验证方式实际验证的内容
mysql 能连操作系统 IPv4 网络
账号密码正确MySQL 权限
Java 在服务器进程位置
端口监听正常Web 服务

👉但没有一个验证 JVM 的网络栈行为


七、这个问题的“识别特征”(以后看到就秒懂)

如果你遇到下面组合,直接优先怀疑 IPv6

  • ✅ mysql 命令行能连

  • ❌ Java JDBC 连不上

  • ❌ 报Communications link failure

  • last packet sent 0 ms

  • Connection refused

  • MySQL 8.x + Connector/J 8.x


八、推荐的生产级 Java 启动模板

以后部署 Java 服务,直接用这个模板

JAVA_OPTS=" -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 " nohup java $JAVA_OPTS -jar app.jar > app.log 2>&1 &

这是大量生产环境的通用写法


九、总结

这次问题的本质不是配置错误,也不是代码 Bug,而是一个运行环境差异问题

程序 ≠ 人
程序要遵守 JVM、操作系统和网络栈的规则

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 7:03:03

偏远地区统计学学生就业难?靠远程工作,我找到了理想工作

作为一名就读于西部偏远城市高校的统计学学生,我曾深陷“毕业即失业”的焦虑。本地几乎没有对口的数据分析岗位,为数不多的统计相关工作集中在基层调查队,不仅年出差天数超200天,竞争还异常激烈,甚至有岗位因报名不足被…

作者头像 李华
网站建设 2026/6/5 22:53:53

国产信创环境下如何用百度编辑器导入PDF文件?

针对在 Vue2 UEditor .NET Core 环境中实现 Word/Excel/PPT/PDF 粘贴导入且图片自动上传 的需求,结合你的技术栈和云服务(华为云 OBS),以下是可直接落地的开源解决方案: 一、核心方案:UEditor WordPast…

作者头像 李华
网站建设 2026/5/26 15:53:32

AI驱动的产业变革:短视频、设计与服务业的落地实践与技术解析

人工智能正从实验室快速渗透到产业毛细血管,在内容创作、视觉设计和服务交互等领域引发效率革命。本文通过12个真实落地案例,结合技术原理、代码实现与商业效果,系统剖析AI如何重塑短视频生产、设计流程与服务体验。从字节跳动的智能剪辑系统…

作者头像 李华
网站建设 2026/6/5 4:44:01

Python+django+vue3基于协同过滤推荐算法的家政服务系统

目录基于协同过滤推荐算法的家政服务系统设计与实现开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!基于协同过滤推荐算法的家政服务系统设计与实现 该系统采用PythonDjangoVue3技术栈&…

作者头像 李华
网站建设 2026/6/3 19:08:35

Python+django+vue3社区团购系统

目录PythonDjangoVue3社区团购系统摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!PythonDjangoVue3社区团购系统摘要 社区团购系统基于PythonDjango后端与Vue3前端构建,采用…

作者头像 李华
网站建设 2026/5/29 3:21:38

基于大数据爬虫+Hadoop的新闻媒体内容推荐与热点话题分析系统开发任务书

一、任务名称 基于大数据爬虫Hadoop的新闻媒体内容推荐与热点话题分析系统开发 二、任务目的 当前新闻媒体行业进入数字化转型深水区,信息过载与内容同质化问题突出,用户难以快速获取精准感兴趣的内容,媒体平台也缺乏对热点话题的实时捕捉、深…

作者头像 李华