
本文详解 databricks jdbc 连接报 403 错误的根本原因——认证方式冲突,并提供符合官方规范的 java 连接代码、url 构建要点及关键注意事项,助你快速恢复连接。
本文详解 databricks jdbc 连接报 403 错误的根本原因——认证方式冲突,并提供符合官方规范的 java 连接代码、url 构建要点及关键注意事项,助你快速恢复连接。
HTTP 403 Forbidden 表示服务端明确拒绝了本次请求:它已成功识别客户端身份(如解析出 Token),但因权限或配置问题拒绝授权访问。在 Databricks JDBC 场景中,最常见且直接的原因是同时在 URL 中嵌入了 UID=token;PWD=
✅ 正确做法是:仅通过 JDBC URL 传递认证信息,调用 getConnection(url) 即可,绝不传入第二组用户名/密码参数。
以下是经过验证的完整 Java 示例(适配 databricks-jdbc:2.6.25-1):
import java.sql.*;
public class DatabricksSetup {
public static void main(String[] args) throws Exception {
// ✅ 正确构建 URL:Token 必须拼入 PWD 参数,AuthMech=3 显式启用 Token 认证
String token = "dapiXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; // 替换为你的个人访问令牌
String workspaceUrl = "your-workspace.cloud.databricks.com"; // 注意:非 azuredatabricks.net(除非 Azure 专属环境)
String httpPath = "sql/protocolv1/o/1234567890123456"; // 替换为实际 SQL Endpoint 路径
String url = "jdbc:databricks://" + workspaceUrl + ":443/default;" +
"transportMode=http;" +
"ssl=1;" +
"httpPath=" + httpPath + ";" +
"AuthMech=3;" + // 关键:指定 Token 认证机制
"UID=token;" + // 固定值,不可更改
"PWD=" + token; // Token 值必须在此处注入
// ✅ 正确调用:仅传入 URL,不传 username/password
try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT current_database(), current_user()")) {
while (rs.next()) {
System.out.println("Database: " + rs.getString(1) + ", User: " + rs.getString(2));
}
} catch (SQLException e) {
System.err.println("Connection failed: " + e.getMessage());
e.printStackTrace();
}
}
}
? 关键注意事项:
-
Maven 依赖版本建议升级:使用 2.6.25-1(而非 2.6.25),后者存在已知认证兼容性问题。pom.xml 中应写为:
<dependency><groupid>com.databricks</groupid><artifactid>databricks-jdbc</artifactid><version>2.6.25-1</version></dependency>
- Workspace URL 格式:通用版为 *.cloud.databricks.com;Azure 版为 *.azuredatabricks.net —— 请严格匹配你的工作区实际域名。
- HTTP Path 来源:需在 Databricks 控制台 → SQL Endpoints 页面复制完整路径(形如 sql/protocolv1/o/{org-id}),而非手动拼写。
- Token 权限:确保该 Personal Access Token 具备 CAN_USE 权限(至少对目标 SQL Endpoint 开启)。
- 防火墙与网络:403 也可能由 VPC 网络策略、IP 白名单或组织级访问控制(SCIM/OAuth)引发,若 URL 和代码无误,请协同 Databricks 管理员核查账户与 Endpoint 级别权限。
遵循上述配置后,403 错误将被彻底规避,连接将稳定建立。记住核心原则:Token 认证 = URL 内置 + AuthMech=3 + getConnection(url) 单参数调用。











