Spring Boot在WSL2中集成MySQL如何实现稳定连接

来源:AI视频音频作者:唐僧头衔:草根站长
导读:本期聚焦于小伙伴创作的《Spring Boot在WSL2中集成MySQL如何实现稳定连接》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Spring Boot在WSL2中集成MySQL如何实现稳定连接》有用,将其分享出去将是对创作者最好的鼓励。

在WSL2环境下开发Spring Boot项目时,集成MySQL数据库是很多后端开发者的常见需求,WSL2的网络架构和原生Linux环境存在差异,容易出现连接失败、连接波动等问题,需要针对性调整配置才能保证连接稳定。

Spring Boot在WSL2中集成MySQL如何实现稳定连接

WSL2与MySQL的网络基础

WSL2采用虚拟化网络架构,和Windows宿主机的网络并非完全打通,默认情况下WSL2内的服务端口不会自动暴露给Windows,这是很多连接问题的核心原因。首先需要在WSL2中安装并启动MySQL服务,执行以下命令安装MySQL:

# 更新软件源
sudo apt update
# 安装MySQL服务
sudo apt install mysql-server
# 启动MySQL服务
sudo service mysql start
# 查看MySQL运行状态
sudo service mysql status

MySQL远程访问配置

默认安装的MySQL只允许本地localhost访问,需要修改配置允许外部连接,首先登录MySQL执行用户授权操作:

-- 登录MySQL,默认root用户无密码可直接登录
mysql -u root
-- 切换到mysql系统库
use mysql;
-- 修改root用户的host为%,允许所有IP访问
update user set host='%' where user='root';
-- 刷新权限
flush privileges;
-- 退出MySQL
exit;

接着需要修改MySQL的配置文件,允许绑定所有网络接口,编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件:

# 编辑MySQL配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

找到bind-address配置项,将其修改为0.0.0.0,保存后重启MySQL服务:

# 重启MySQL服务使配置生效
sudo service mysql restart

Spring Boot数据源配置

在Spring Boot项目的application.yml或application.properties中配置数据源,需要注意WSL2的IP地址获取方式,Windows访问WSL2内的服务可以使用WSL2的虚拟IP,也可以在较新版本的WSL2中直接使用localhost映射。

首先获取WSL2的IP地址,在WSL2终端执行以下命令:

# 查看WSL2的IP地址
ip addr show eth0 | grep inet

假设获取到的WSL2 IP为172.28.123.45,MySQL端口为3306,Spring Boot的application.yml配置如下:

spring:
  datasource:
    # 如果WSL2版本支持localhost映射,也可以用jdbc:mysql://localhost:3306/test_db
    url: jdbc:mysql://172.28.123.45:3306/test_db?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 你的MySQL密码
    driver-class-name: com.mysql.cj.jdbc.Driver

稳定连接优化方案

处理WSL2 IP变动问题

WSL2重启后IP地址可能会发生变化,导致Spring Boot连接失效,可以在Windows的hosts文件中添加WSL2的域名映射,或者在Spring Boot中配置动态获取WSL2 IP的逻辑。更简单的方案是在WSL2中固定IP,编辑WSL2的网络配置文件:

# 编辑WSL2的网络配置
sudo vim /etc/netplan/01-network-manager-all.yaml

添加以下内容固定IP,根据实际网络调整网段:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses: [172.28.123.45/24]
      gateway4: 172.28.123.1
      nameservers:
        addresses: [8.8.8.8]

应用配置后IP即可固定,避免重启后连接失效。

调整数据源连接池参数

默认的连接池参数可能导致连接超时,建议在Spring Boot中调整HikariCP连接池参数,提升连接稳定性:

spring:
  datasource:
    hikari:
      # 连接超时时间,单位毫秒
      connection-timeout: 30000
      # 最大连接数
      maximum-pool-size: 10
      # 最小空闲连接数
      minimum-idle: 5
      # 连接最大存活时间,单位毫秒
      max-lifetime: 1800000
      # 连接空闲超时时间,单位毫秒
      idle-timeout: 600000

验证连接稳定性

编写简单的测试接口验证连接是否正常,创建测试Controller:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @GetMapping("/test-mysql")
    public String testMysql() {
        // 执行简单查询验证连接
        Integer count = jdbcTemplate.queryForObject("select 1", Integer.class);
        return "MySQL连接正常,查询结果:" + count;
    }
}

启动Spring Boot项目后访问/test-mysql接口,返回正常结果则说明连接配置成功,连续多次访问无异常即可确认连接稳定。

常见问题排查

  • 连接超时:检查MySQL是否启动,WSL2防火墙是否开放3306端口,Windows防火墙是否允许Spring Boot程序访问网络
  • 访问被拒绝:检查MySQL用户host配置是否为%,密码是否正确,是否执行了flush privileges刷新权限
  • 重启后连接失效:检查WSL2 IP是否变动,建议固定WSL2 IP或者更新数据源配置中的IP地址

Spring_BootWSL2MySQL数据库连接修改时间:2026-07-02 05:36:19

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。