1. Trino CLI 连接与基础查询验证

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 参数 --server coordinator 地址 --user 认证身份 --catalog 默认 catalog --schema 默认 schema --password / 认证文件 会话属性 server URI 连接目标 user identity 认证主体 current_catalog 默认 catalog current_schema 默认 schema authentication 验证查询与判读 SELECT version() 返回版本号 → 连接与认证通过 连接拒绝 → 检查 server / 认证 SELECT current_catalog, current_schema 与预期一致 → 默认命名空间正确 不一致 → 检查 --catalog / --schema SELECT ... FROM information_schema.tables 返回表清单 → 元数据可读 空集 → 权限不足或 catalog 未注册 --execute 非交互验证 适合脚本 / CI 自动化检查

常见连接异常的定位顺序

当 CLI 报错时,按「网络 → 认证 → 命名空间 → 权限」的顺序排查,可以避免在错误的方向上反复修改参数。

现象最可能原因验证动作
Connection refused / timeoutcoordinator 地址或端口错误,或服务未启动用 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。