1. Trino CLI 连接与基础查询验证
连接前的准备:明确三个坐标
Trino CLI 连接的本质是把「coordinator 地址 + 认证方式 + 默认 catalog/schema」三件事一次性告诉客户端。任何一项写错,后续查询都会在错误的位置或错误的身份下执行。因此第一步不是急着敲 SQL,而是先把这三个坐标固定下来。
- coordinator 地址:CLI 的
--server参数,形如http://coordinator-host:8080。端口是 coordinator 的 HTTP 端口,不是 worker 端口。 - 认证方式:常见为无认证(开发环境)、
--user指定用户名、或--password配合--authentication-file做基础认证。认证方式必须与 coordinator 端配置一致,否则连接会被拒绝。 - 默认 catalog/schema:
--catalog与--schema,决定后续不带前缀的查询落在哪个命名空间。
用 CLI 建立连接并执行元数据查询
下面这条命令把三个坐标显式写全,并直接进入交互式会话。示例假设 coordinator 位于 trino-coordinator:8080,使用用户名 etl_user,默认 catalog 为 system、schema 为 information_schema。
trino \
--server http://trino-coordinator:8080 \
--user etl_user \
--catalog system \
--schema information_schema
进入交互界面后,先执行三条验证查询,分别确认连接、默认命名空间和元数据可见性:
-- 1. 确认连接与版本
SELECT version();
-- 2. 确认当前默认 catalog 与 schema
SELECT current_catalog, current_schema;
-- 3. 确认 information_schema 元数据可读
SELECT table_catalog, table_schema, table_name
FROM information_schema.tables
WHERE table_schema = 'information_schema'
ORDER BY table_name
LIMIT 10;
如果第 2 条返回的 current_catalog 与 current_schema 不是预期值,说明 --catalog 或 --schema 写错,或该 catalog 在 coordinator 上未注册。第 3 条若返回空集,通常意味着当前用户没有访问该 catalog 的权限,而非连接失败。
非交互场景(脚本、CI)可用
--execute 直接跑一条查询并退出,例如 trino --server ... --user ... --catalog system --schema information_schema --execute "SELECT current_catalog, current_schema",便于把连接验证做成自动化检查。连接参数与验证结果的对应关系
下图把「CLI 参数 → 会话属性 → 验证查询 → 判读结论」串成一条信号链,帮助在连接异常时快速定位是哪一环出了问题。
常见连接异常的定位顺序
当 CLI 报错时,按「网络 → 认证 → 命名空间 → 权限」的顺序排查,可以避免在错误的方向上反复修改参数。
| 现象 | 最可能原因 | 验证动作 |
|---|---|---|
| Connection refused / timeout | coordinator 地址或端口错误,或服务未启动 | 用 curl http://host:8080/v1/info 确认 HTTP 可达 |
| 401 / 403 | 认证方式不匹配,或用户名无权限 | 检查 --user、--password 与 coordinator 认证配置 |
| Catalog does not exist | --catalog 指向未注册的 catalog | 执行 SHOW CATALOGS 查看可用列表 |
| Schema does not exist | --schema 拼写错误或该 catalog 下无此 schema | 执行 SHOW SCHEMAS FROM <catalog> |
| information_schema 查询返回空 | 当前用户缺少该 catalog 的访问权限 | 换用有权限的用户,或检查 coordinator 的访问控制规则 |
不要把「连接成功」等同于「配置正确」。CLI 能进入交互界面只说明网络与认证通过;默认 catalog/schema 是否正确,必须通过
current_catalog 与 current_schema 查询来确认。很多后续查询报「表不存在」,根源就是连接时默认命名空间写错。可复用的连接验证检查单
把以下检查单保存为脚本或团队文档,每次接入新 coordinator 时逐项确认,可显著减少环境切换带来的低级错误。
- coordinator HTTP 端点可达:
curl -s http://<host>:<port>/v1/info返回 JSON。 - CLI 能进入交互界面,且
SELECT version()返回版本号。 SELECT current_catalog, current_schema返回值与预期一致。SHOW CATALOGS中包含目标 catalog。information_schema.tables能返回至少一行记录。- 非交互模式
--execute能正常输出结果并退出码为 0。