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

如何通过jdbc:mysql连接Siteground MySQL?连接失败该如何排查?

连接Siteground MySQL失败排查步骤

1. 补全异常输出定位根因

当前代码吞掉了所有异常信息,无法判断是驱动加载失败、权限错误还是网络不通,先修改catch块输出异常详情:

public void Connect() {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://sgp39.siteground.asia:3306/dbdyyh2gyaltys", "username", "password");
        } catch (ClassNotFoundException ex) {
            System.out.println("驱动加载失败:" + ex.getMessage());
            ex.printStackTrace();
        } catch (SQLException ex) {
            System.out.println("数据库连接失败:" + ex.getMessage());
            ex.printStackTrace();
        }
}

根据输出的错误信息可以直接缩小排查范围。

2. 检查Siteground MySQL权限配置

Siteground默认关闭MySQL公网访问权限,这是大部分连接失败的原因,按以下顺序核对配置:

  • 登录Siteground后台,进入对应站点的MySQL管理模块,找到「远程MySQL」设置项,将你运行GUI项目的设备公网IP添加到访问白名单
  • 确认你使用的数据库账号、密码为Siteground后台分配的授权账号,账号必须已经绑定dbdyyh2gyaltys数据库并配置了读写权限
  • 注意Siteground生成的数据库用户名、数据库名都会自动带站点前缀,不要手动省略前缀填错参数

3. 调整JDBC连接串参数

权限配置完成后如果还是连接失败,在原连接串后补充必要的适配参数:

jdbc:mysql://sgp39.siteground.asia:3306/dbdyyh2gyaltys?useSSL=false&serverTimezone=Asia/Singapore&allowPublicKeyRetrieval=true
  • useSSL=false:公网测试时可以先关闭SSL校验,避免证书校验不通过导致连接失败
  • serverTimezone=Asia/Singapore:你使用的是新加坡节点主机,需匹配服务器时区避免时区不兼容报错
  • allowPublicKeyRetrieval=true:避免公网连接时公钥获取失败的异常

4. 网络连通性校验

如果调整后还是无法连接,先在运行项目的设备上执行命令测试端口连通性:
telnet sgp39.siteground.asia 3306
如果端口连接失败,说明是网络层面拦截,需要核对IP白名单是否正确、本地防火墙/运营商是否拦截了3306端口的出站请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:06:03