核心用法
db-query 是一款面向开发运维场景的数据库查询技能,核心解决远程数据库安全访问与配置管理标准化两大痛点。通过集中式 JSON 配置文件管理多数据库连接,支持自动 SSH 隧道建立与销毁,用户只需指定数据库描述名即可执行 SQL 查询。
工作流程:
1. 读取 ~/.config/clawdbot/db-config.json 匹配数据库描述
2. 若配置 SSH 隧道,自动建立本地端口转发
3. 通过环境变量注入密码,执行 MySQL 查询
4. 查询完成后自动关闭 SSH 隧道,避免连接残留
显著优点
- 安全设计优先:密码通过
MYSQL_PWD/SSHPASS环境变量传递,进程列表中不可见;推荐将敏感信息外置到环境变量而非配置文件 - 零运维负担:SSH 隧道的生命周期完全自动化,无需手动
ssh -L或担心忘记关闭 - 多环境友好:单配置文件支持多个数据库,通过描述名区分,支持大小写不敏感的部分匹配
- 配置即代码:JSON 配置易于版本控制(脱敏后),环境变量命名规范清晰
潜在缺点与局限性
- 仅支持 MySQL:当前实现依赖
mysql客户端,不支持 PostgreSQL、MongoDB 等 - Python 3.6+ 依赖:目标环境需预装 Python,且脚本路径硬编码于
node_modules下,移植性受限 - 单查询单连接:每次查询独立建立连接,高频短查询场景开销较大
- SSH 密码依赖 sshpass:若使用 SSH 密码认证需额外安装
sshpass,密钥认证场景未明确说明 - 错误处理透明度:自动隧道关闭虽便利,但连接失败时的调试信息可能分散在多个层
适合人群
- 需要频繁访问跳板机后数据库的开发者、DBA
- 追求配置标准化、避免本地 SSH 隧道手动管理的团队
- 已将 MySQL 作为主力数据库的技术栈
常规风险
- 环境变量在 shell history 中可能残留(建议配合
HISTCONTROL或使用专用 secret 管理工具) - 配置文件权限若设置不当(如 644),数据库描述等元数据可能泄露
- 本地端口冲突:多数据库共用同一
local_port会导致隧道建立失败