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

重装MySQL后Java应用连接数据库出现通信链路故障求助

问题排查与解决

1. 适配JDBC驱动与MySQL版本兼容性

重装MySQL后版本大概率更新(比如从5.x升级到8.x),旧驱动com.mysql.jdbc.Driver无法适配MySQL8+,需替换为com.mysql.cj.jdbc.Driver,同时URL必须添加时区参数。

  • 若使用Maven,更新依赖:
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version> <!-- 版本需匹配你的MySQL实际版本 -->
</dependency>
  • 修改代码中的驱动类和URL:
static Connection getConnection() {
    try {
        // 适配MySQL8+的驱动类
        Class.forName("com.mysql.cj.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        throw new RuntimeException(e);
    }
    String username = "root";
    String password = "password";
    // 添加时区参数,按需关闭SSL(根据环境调整)
    String url = "jdbc:mysql://127.0.0.1:3306/wnetwork?serverTimezone=UTC&useSSL=false";
    try{
        // 建议单独传入用户名密码,避免URL拼接带来的编码问题
        setConnection(DriverManager.getConnection(url, username, password));
    } catch (SQLException e) {
        throw new IllegalStateException(e);
    }
    return connection;
}

2. 配置MySQL用户TCP连接权限

终端连接MySQL用的是本地socket,而JDBC用的是127.0.0.1的TCP连接,重装后root用户可能未被授权TCP连接权限:

  • 登录MySQL终端,执行授权命令:
GRANT ALL PRIVILEGES ON wnetwork.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

3. 检查MySQL绑定地址配置

确保MySQL允许127.0.0.1的TCP连接:

  • 打开MySQL配置文件(my.cnf/my.ini),找到bind-address配置项,设置为127.0.0.1或0.0.0.0(允许所有IP访问)
  • 重启MySQL服务:
# Linux系统
sudo systemctl restart mysql
# Windows系统
net stop mysql && net start mysql

4. 补充URL必要参数

旧URL可能缺少MySQL新版本要求的参数,除时区外,若遇到公钥相关错误,可添加allowPublicKeyRetrieval=true,最终URL示例:

jdbc:mysql://127.0.0.1:3306/wnetwork?serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:33:10