核心用法
db-query 是一个面向开发运维人员的数据库查询工具,通过集中式 JSON 配置文件管理多数据库连接,并内置自动 SSH 隧道生命周期管理。用户通过 --database 指定数据库描述名称(支持大小写不敏感的部分匹配),配合 --query 执行 SQL 语句,脚本自动完成隧道建立、查询执行、隧道关闭的完整流程。
显著优点
1. 零运维隧道管理:SSH 隧道的建立与销毁完全自动化,避免手动维护隧道的繁琐与遗漏风险
2. 配置驱动设计:单文件集中管理多数据库连接信息,支持生产/测试环境快速切换
3. 安全隔离:数据库凭证本地存储于 ~/.config/clawdbot/,避免硬编码或命令行暴露
4. 灵活匹配机制:通过描述性 name 字段而非技术 ID 选择数据库,降低使用门槛
潜在缺点与局限
- 单数据库类型:当前仅支持 MySQL(依赖
mysql-client),PostgreSQL/MongoDB 等需扩展 - Python 依赖:需要 Python 3.6+ 环境,纯容器化场景可能需额外安装
- 本地端口冲突:多数据库同时使用时需手动规划
local_port避免冲突 - 无查询结果缓存:重复查询会重复建立隧道,高频场景性能开销明显
- 凭证明文存储:JSON 配置中密码为明文,依赖文件系统权限控制
适合人群
- 需要频繁访问跳板机后数据库的后端开发/DBA
- 多环境(生产/预发/测试)切换的运维工程师
- 希望简化 SSH 隧道操作的技术团队
常规风险
| 风险类型 | 说明 | 缓解建议 |
|---------|------|---------|
| 凭证泄露 | 配置文件权限不当导致密码暴露 | 设置 600 权限,避免版本控制提交 |
| 隧道残留 | 异常中断可能导致 SSH 进程残留 | 定期巡检,依赖脚本的清理逻辑 |
| 误操作生产 | 模糊匹配可能选错数据库 | 命名规范区分环境,执行前 `--list` 确认 |
| 注入风险 | 动态 SQL 拼接未参数化 | 严格限制使用场景,避免用户输入直接拼接 |