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

如何解决JDBC连接Docker中MySQL的通信链路失败问题

解决Docker中MySQL的JDBC连接SSL握手失败问题

问题核心分析

从异常堆栈可知,根源是javax.net.ssl.SSLHandshakeException——JDBC驱动尝试通过SSL连接MySQL,但Docker部署的MySQL默认未启用SSL,导致握手终止;同时代码中还存在SQL执行方法误用的问题。

具体解决步骤

  • 修正JDBC连接URL的SSL参数
    将原连接URL修改为:

    "jdbc:mysql://localhost/sampledb?useSSL=false&allowPublicKeyRetrieval=true"
    

    原因:MySQL 8.0+版本的JDBC驱动默认强制SSL连接,而Docker容器内的MySQL默认未配置SSL证书,添加useSSL=false可禁用SSL连接;allowPublicKeyRetrieval=true用于解决因公钥获取失败导致的连接问题。

  • 修正SQL执行方法
    代码中使用executeQuery()执行INSERT语句是错误的,该方法仅适用于查询类SQL(返回ResultSet),INSERT/UPDATE/DELETE需使用executeUpdate():

    // 替换原ResultSet相关代码
    int affectedRows = statement.executeUpdate("insert into demo values(1, 'A')");
    // 可通过affectedRows判断插入操作是否成功
    
  • 验证MySQL用户权限
    进入Docker容器内的MySQL,确认root用户允许从宿主机连接(若密码为空需确保权限配置正确):

    # 进入Docker MySQL容器
    docker exec -it [容器ID/名称] mysql -uroot -p
    # 执行权限赋予命令(若用户host限制为localhost则需调整)
    GRANT ALL ON sampledb.* TO 'root'@'%';
    FLUSH PRIVILEGES;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:23:14