安全查询项目数据库的自动化工具,支持SSH隧道自动管理,避免密码暴露在进程列表中。
说明:
## 核心用法
`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` 会导致隧道建立失败









