开源一个数据库 CLI:dbx

18 阅读3分钟

开源一个数据库 CLI:dbx

最近把自己平时排查 MySQL 和 Redis 用的一套命令整理成了一个小工具:dbx

它的定位很简单:用 profile 管理连接信息,把常用数据库操作收口成几条固定命令,方便人直接用,也方便 CodexClaude Code 这类 AI Agent 直接调用。

项目地址: github.com/jianzhangg/…

它有什么用

  • 不用为 MySQL 和 Redis 分别配置多套 MCP
  • 对话里不需要反复加载多套工具说明,占用的 token 和上下文都会更小
  • 用一套命令统一 MySQL 和 Redis
  • 用 YAML 一次性配置多个 profile,MySQL 和 Redis 可以一起管
  • 默认输出 JSON,方便脚本和 Agent 消费
  • 支持 readonly,适合线上只读排查
  • 支持 timeout,避免命令一直挂住

核心命令只有这几条:

dbx profile list
dbx profile show <profile>
dbx ping <profile>
dbx sql <profile> "<sql>"
dbx redis <profile> <command> [args...]

典型场景:

  • 查 MySQL 最近几条数据
  • 看 Redis key 的值和 TTL
  • 用只读 profile 做线上排查
  • 让 AI Agent 帮你探活、查数据、核对结果

如果你平时已经在终端里来回切 mysqlredis-cli,那这个工具的价值其实很直接:把最常用的那部分操作统一起来,省得每次都重新切命令和找连接配置。

如果你平时会让 AI Agent 参与排查,这个优势会更明显:不需要再单独找 MySQL MCP、Redis MCP,也不用分别维护不同版本的配置。直接配好一份 dbx 的 profiles,后面就可以统一查 MySQL 和 Redis。

怎么用

1. 安装

npm install -g @jianzhangg/dbx-cli
dbx --help

要求 Node.js >= 18

2. 初始化配置

dbx config

默认配置路径:

macOS / Linux: ~/.config/dbx/profiles.yml
Windows: %APPDATA%\dbx\profiles.yml

也可以显式指定配置文件:

DBX_CONFIG=/absolute/path/to/profiles.yml dbx profile list
dbx --config /absolute/path/to/profiles.yml profile list

3. 写 profile

profiles:
  prod_mysql_ro:
    kind: mysql
    host: 127.0.0.1
    port: 3306
    user: readonly
    password: secret
    database: app
    readonly: true
    timeout: 30

  cache_redis_ro:
    kind: redis
    url: redis://default:secret@127.0.0.1:6379/0
    readonly: true
    timeout: 30

建议把只读和可写 profile 分开,比如 *_ro*_rw。这样平时排查就默认走只读,心里会踏实很多。

4. 直接执行

dbx profile list
dbx profile show prod_mysql_ro
dbx ping prod_mysql_ro
dbx sql prod_mysql_ro "select id, status from orders order by id desc limit 10"
dbx redis cache_redis_ro GET session:1
dbx redis cache_redis_ro TTL session:1

readonly 和 timeout

dbx 比较核心的两个能力是 readonlytimeout

readonly: true 时:

  • MySQL 只允许 SELECTSHOWDESCDESCRIBEEXPLAINWITH
  • Redis 只允许只读命令集合,像 GETMGETHGETALLTTL 这些可以直接用
  • 写命令会被直接拦截

timeout 是 profile 级超时配置,到了时间自动断开,避免命令卡死。对手动排查有用,对 Agent 场景更有用。

给 AI Agent 用

仓库里带了一个给 Codex 用的 skill,装到全局 skills 目录后,Agent 可以直接调用 dbx

这套方式比拆成多套 MCP 更轻一些,原因也很直接:

  • 不用同时维护多个 MySQL / Redis MCP
  • 对话上下文里少塞几套工具说明,token 占用会更小
  • profile 可以一次配多套,切环境也更方便
  • MySQL 和 Redis 可以走同一套使用方式
mkdir -p ~/.codex/skills
cp -R "$(npm root -g)/@jianzhangg/dbx-cli/skills/dbx" ~/.codex/skills/dbx

如果用了自定义 CODEX_HOME,目标目录就是:

$CODEX_HOME/skills/dbx

装好后可以直接这样说:

  • 使用 $dbx 列出当前可用的 profile
  • 使用 $dbx ping mysql_test
  • 使用 $dbx 查 prod_mysql_ro 最近 10 条订单
  • 使用 $dbx 查看 redis_test 里某个 key 的 TTL

总结

dbx 的定位很简单,就是一层给人和 AI Agent 共用的数据库 CLI:

  • 不用配多套 MCP
  • token 和上下文占用更小
  • profile 管理连接
  • 多个 profile 一次配置
  • MySQL / Redis 统一命令面
  • 默认 JSON 输出
  • 内置只读保护
  • 内置超时控制

如果你平时会让 AI 参与数据库排查,或者你自己就习惯在终端里查库查缓存,这个工具会比较顺手。

GitHub: github.com/jianzhangg/…

NPM: www.npmjs.com/package/@ji…