---
title: DBX CLI
description: 在终端、脚本、CI 和 Codex 中使用 DBX 连接。
---
DBX CLI 是独立命令行包,适合终端、脚本和 AI 编程助手工作流。它与 MCP Server 共享 DBX 连接存储和 SQL 安全规则。
## 安装
```bash
npm install -g @dbx-app/cli
```
需要 Node.js 22.13.0 或更高版本。
查看版本:
```bash
dbx --version
```
## 常用命令
```bash
dbx doctor
dbx capabilities
dbx connections list --json
dbx connections list --format csv
dbx schema list local --json
dbx schema describe local users --json
dbx query local "select count(*) as total from users" --json
dbx query local "select id, name from users" --format csv
dbx query local "select * from users" --limit 50 --timeout 10s --json
dbx query local --file ./query.sql --json
dbx context local --tables users,orders
dbx open local users
```
## 诊断
使用 `dbx doctor` 查看本地 DBX 路径、连接存储健康状态,以及桌面端 bridge 是否可用:
```bash
dbx doctor
dbx doctor --json
```
如果切换 Node.js 版本后,`dbx doctor` 报 `NODE_MODULE_VERSION` 不匹配,请用运行 `dbx` 的同一个 Node.js 版本重建 native 依赖:
```bash
pnpm rebuild better-sqlite3 keytar --pending
```
如果是全局 npm 安装,使用同一个 Node.js 版本重新安装 CLI:
```bash
npm uninstall -g @dbx-app/cli
npm install -g @dbx-app/cli
```
使用 `dbx capabilities` 查看哪些数据库类型可以直接查询,哪些当前需要 DBX 桌面端:
```bash
dbx capabilities
dbx capabilities --json
```
当前直接执行支持 PostgreSQL/Redshift、MySQL 兼容数据库(MySQL、Doris、StarRocks)和 SQLite。其它数据库类型在对应驱动加入 `@dbx-app/node-core` 前,会使用 DBX 桌面端 bridge。
## 默认连接
设置 `DBX_CONNECTION` 后,`query` 和 `context` 命令可以省略连接名:
```bash
DBX_CONNECTION=local dbx query "select 1" --json
DBX_CONNECTION=local dbx context --tables users,orders
```
## 输出格式
使用 `--json` 或 `--format json` 可以获得稳定的机器可读输出。`--format csv` 适合把查询、连接、Schema 数据传给其它命令行工具。
```bash
dbx query local "select id, name from users" --format csv
```
错误会写入 stderr,并返回非零退出码。
## 查询控制
`dbx query` 执行单条 SQL,默认只读。
```bash
dbx query local "select * from users" --limit 50 --timeout 10s --json
```
时间支持 `ms`、`s`、`m`,例如 `500ms`、`10s`、`1m`。
非危险写操作需要显式使用 `--allow-writes`:
```bash
dbx query local "update users set name = 'Ada' where id = 1" --allow-writes
```
`DROP`、`TRUNCATE`、`ALTER` 等危险 SQL 需要同时显式使用 `--allow-writes` 和 `--allow-dangerous-sql`。
## 以短横线开头的 SQL
如果 SQL 以短横线开头,在 SQL 前加 `--`:
```bash
dbx query local --json -- "-- comment
select 1"
```
## 错误码
CLI JSON 错误使用稳定错误码:
| 错误码 | 含义 |
|---|---|
| `UNKNOWN_OPTION` | 使用了不支持的参数 |
| `INVALID_OPTION` | 参数缺少值或值不合法 |
| `INVALID_ARGUMENT` | 位置参数缺失或冲突 |
| `CONNECTION_STORE_ERROR` | DBX 连接存储存在,但无法读取 |
| `CONNECTION_NOT_FOUND` | 找不到指定的 DBX 连接 |
| `SQL_BLOCKED` | SQL 被安全规则拦截 |
| `DBX_NOT_RUNNING` | DBX 桌面端 bridge 不可用 |
| `ERROR` | 未预期的运行时错误 |
## 桌面端 Deep Link
DBX 桌面端支持通过 `dbx://connection/new` 从浏览器、堡垒机或脚本打开新建连接窗口并预填连接信息。
DSN 模式:
```bash
open 'dbx://connection/new?url=postgres%3A%2F%2Fapp%3Asecret%40db.internal%3A5432%2Forders'
```
字段模式:
```bash
open 'dbx://connection/new?type=mysql&host=127.0.0.1&port=3306&user=root&password=secret&database=test'
```
支持的字段:
| 字段 | 含义 |
|---|---|
| `type` | 数据库类型,例如 `mysql`、`postgres`、`redis`、`mongodb` |
| `url` | 数据库 DSN,建议 URL encode |
| `name` | DBX 中显示的连接名;未传时优先使用 `database`,其次使用 `host` |
| `host` | 主机地址 |
| `port` | 端口 |
| `user` | 用户名 |
| `password` | 密码 |
| `database` | 数据库名;Redis 可传 DB index,例如 `0` |
| `url_params` | 额外连接参数,例如 `sslmode=require` |
| `ssl` | 是否启用 SSL,`true` 表示启用 |
| `one_time` | `true` 时自动连接,断开后自动删除连接信息 |
一次性连接示例:
```bash
open 'dbx://connection/new?type=redis&host=127.0.0.1&port=6379&user=default&password=secret&database=0&one_time=true'
```
测试系统级 `dbx://` 唤起前,请先安装并启动一次 DBX 桌面端,让系统注册 URL 协议。macOS 可使用 `open 'dbx://connection/new?...'` 测试。
## Codex
Codex 可以直接通过 shell 调用 CLI:
```bash
dbx schema describe local users --json
dbx context local --tables users,orders | codex exec "Write a retention query"
```