通过 MySQL 协议连接
Apache Doris 完整兼容 MySQL 网络通信协议。因此,所有遵循该协议的客户端工具、可视化工具,以及各主流编程语言的 MySQL 驱动 / 类库,都可以直接连接 Doris,无需安装任何 Doris 专属驱动。
Doris FE 默认在
9030端口提供 MySQL 协议服务,对应fe.conf中的query_port配置项。
典型使用场景
根据使用目的,MySQL 协议连接可分为两类典型场景:
| 场景 | 典型用途 | 推荐方式 |
|---|---|---|
| 命令行 / 脚本访问 | 运维排查、临时查询、自动化脚本 | MySQL CLI |
| 应用程序集成 | 后端服务、数据处理程序、ETL 任务 | 对应语言的 MySQL 驱动(Java / Go / Rust / Python / C++ 等) |
连接前的准备
执行连接前,需要确认以下信息:
| 信息 | 说明 | 示例 |
|---|---|---|
FE_IP | Doris FE 节点的 IP 地址或主机名 | 172.20.63.118 |
FE_QUERY_PORT | FE MySQL 协议服务端口,对应 fe.conf 中的 query_port | 9030 |
USER | 登录账户 | root |
PASSWORD | 登录密码(默认 root 账户密码为空) | - |
如需自定义端口,请同步修改 FE 节点上
fe.conf的query_port配置项并重启 FE。
连接示例
下面针对不同的 MySQL 客户端 / 语言驱动,给出最小化连接示例。可通过 Tab 切换查看:
- MySQL CLI
- Java
- Go
- Rust
- Python
- C++
适用于命令行运维、临时查询及脚本化调用等场景。
1. 下载并解压 MySQL 客户端
从 MySQL 官网 下载 MySQL 客户端。Doris 兼容 MySQL 5.7 及以上版本的客户端。
解压后,可在 bin/ 目录下找到 mysql 命令行工具。
2. 连接 Doris
执行以下命令连接 Doris:
mysql -h FE_IP -P FE_QUERY_PORT -u USER -p
回车后输入密码即可(root 账户默认无密码,直接回车)。
3. 验证登录
登录成功后,将显示如下信息:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 236
Server version: 5.7.99 Doris version doris-2.0.3-rc06-37d31a5
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
适用于 Java 应用程序集成 Doris 的场景。Doris 推荐使用 MySQL JDBC Connector 进行连接。
1. 引入 JDBC 驱动
在项目中引入 MySQL JDBC Connector 依赖(建议使用 MySQL 5.1.49 及以上版本)。
2. 编写连接代码
String user = "user_name";
String password = "user_password";
String url = "jdbc:mysql://FE_IP:FE_QUERY_PORT/demo"
+ "?useUnicode=true"
+ "&characterEncoding=utf8"
+ "&useTimezone=true"
+ "&serverTimezone=Asia/Shanghai"
+ "&useSSL=false"
+ "&allowPublicKeyRetrieval=true";
try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("show databases")) {
ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();
while (rs.next()) {
for (int i = 1; i <= columnCount; i++) {
System.out.println(rs.getObject(i));
}
}
} catch (SQLException e) {
log.error("get JDBC connection exception.", e);
}
3. 常用 JDBC URL 参数
| 参数 | 含义 | 推荐值 / 示例 | 是否必需 |
|---|---|---|---|
useUnicode | 是否使用 Unicode 字符集 | true | 否 |
characterEncoding | 字符编码 | utf8 | 否 |
useTimezone | 是否启用时区转换 | true | 否 |
serverTimezone | 服务器时区 | Asia/Shanghai | 否 |
useSSL | 是否使用 SSL 连接 | false | 否 |
allowPublicKeyRetrieval | 是否允许从服务器获取公钥(MySQL 8 驱动通常需要) | true | 否 |
sessionVariables | 连接建立时初始化的会话变量 | key1=val1,key2=val2 | 否 |
4. 初始化会话变量(可选)
如需在连接建立时初始化会话变量(Session Variables),可使用如下 URL 格式:
jdbc:mysql://FE_IP:FE_QUERY_PORT/demo?sessionVariables=key1=val1,key2=val2
Go 语言通过 MySQL 驱动连接 Doris 的示例,将在后续版本中补充。
Rust 语言通过 MySQL 驱动连接 Doris 的示例,将在后续版本中补充。
Python 通过 MySQL 驱动连接 Doris 的示例,将在后续版本中补充。
C++ 通过 MySQL Connector 连接 Doris 的示例,将在后续版本中补充。