深色模式
数据库工作台
Navicat 式的数据库管理器:左侧连接树统管所有连接,可拖拽布局,会话持久;SQL 编辑器 + 点选式数据 CRUD + 图形化表设计器 + DBA 工具 + 导入导出。Reeve 内嵌了一个受控的 Navicat。

支持的数据库
| 类型 | 说明 |
|---|---|
| MySQL | 5.7 / 8.0 |
| MariaDB / TiDB / OceanBase | MySQL 兼容库类型,复用 MySQL 驱动 |
| PostgreSQL | 12+ |
| SQLite | 本地 / 远端文件 |
| SQL Server | 通过 TDS 协议(tiberius) |
| MongoDB | 文档浏览器 |
| ClickHouse | HTTP 8123 执行器 |
| Redis | 一等数据源(DB0-15 + key 树 + INFO 仪表盘,见下) |
进入
侧边栏页与工作台标签共用同一套 SQL 工作台组件,会话状态持久——切到别的页再回来,打开的连接和 SQL 草稿都还在。
凭据来源
数据库工作台必须先有凭据,三种来源:
- 手动创建:服务凭据页或工作台里新建 DB 凭据(归属选了服务器时默认经它的 SSH 隧道连接,主机怎么填见下文经服务器 SSH 隧道连接)
- AI 一键安装:MCP 工具
install_with_secret装好的 MySQL / Postgres / Redis 自动入凭据库 - 从已有服务器内查:服务器关联的 DB(如远端 1Panel 装的 MySQL)
连接树
左侧是一棵连接树,而不是单库树——一棵树管所有连接,可同时展开多个连接:
连接树
├─ ● MySQL @ aliyun-prod 绿点=已连,driver 图标,[受控] 徽标
│ ├─ ▸ shop_db
│ │ ├─ 表 (24) 数量徽标
│ │ │ ├─ users 列带 PK/FK/索引/NOT NULL 图标
│ │ │ └─ orders
│ │ ├─ 视图 (3)
│ │ ├─ 存储过程 (5)
│ │ └─ 函数
│ └─ ▸ log_db
├─ ○ PostgreSQL @ home-nas 灰点=未连,点击懒连接
└─ ○ SQLite @ app.db- 灰点连接点击即懒连接;断连可双击 / 右键重连,绿点反映真实可达性
- 树顶有过滤框,按名字快速定位
- 连接级操作(创建库 / 同步 / 备份 / 改密 / 实例工具)收纳在树底工具条 + 连接节点右键
- 单击库节点:左侧树展开表,同时右侧显示表清单(对象列表,每行带表图标、注释、导入 / 导出按钮)
可拖拽布局
- 连接树 ↔ 工作区横向可拖拽
- 编辑器 ↔ 结果区纵向可拖拽
- 分割位置记忆,不再是写死的宽度 / 高度
SQL 编辑器
CodeMirror 6 驱动,多 Tab:
- 各方言语法高亮(MySQL / PG / SQLite / SQL Server …)
- 关键字 + 基于元数据的表名 / 列名补全
- Cmd/Ctrl+Enter 执行光标所在语句;Cmd/Ctrl+Shift+Enter 执行整个 Tab
- 运行 SQL 文件采用 Navicat 式布局,消息日志直接显示在下方
数据网格(点选式 CRUD)
双击表名打开数据网格,不写 SQL 也能改数据:
- 列宽可拖,列排序 + WHERE 筛选
- 表头第二行显示列注释(备注)
- 单元格右键 + 双击行内编辑,新增行
- 横向滚动条固定贴面板底部
- 单元格点击查看完整内容(含 BLOB / JSON,BLOB 按 UTF-8 显示)
- 大结果分页
写回也走安全通道
数据网格的改 / 删都走参数化 db_execute + 必带 WHERE 主键,和手写 SQL 一样过危险检查、写审计。
图形化表设计器
中间编辑区以标签页形式打开(对标 Navicat):
- 建表:加列 / 删列、类型、约束、默认值
- 改列(MODIFY) + 索引管理(加 / 删)
- 只读查看表结构 / 建表语句
DBA 工具
- 进程列表 / Kill 会话
- 用户权限 查看
- EXPLAIN 执行计划
- 库级 运行 SQL 文件 / 转储 SQL 文件(库级 SQL,区别于表级 CSV)
- 删表 / 清空表 / 重命名表(人用 DBA 通道 + 二次确认)
建库 / 同步 / 备份
- 建库:支持指定字符集与排序规则(collation,默认
utf8mb4_general_ci) - 多库同步 / 备份恢复
- AI 生成 SQL:用自然语言描述需求,AI 生成 SQL 填进编辑器
导入导出
- 数据网格 / 对象列表 / 库节点 / 表分类节点多处入口
- 表数据导入 / 导出 CSV / SQL
- 结果导出 JSON / CSV,复制为 Markdown 表格
查询历史 & SQL 片段
- 每个连接的执行历史可回溯
- SQL 片段库:常用 SQL 不绑特定凭据,任意编辑器一键插入(见命令片段)
Redis 一等数据源
Redis 凭据进入时切到 Redis 视图(不再只是简单 Key/Value):
- DB0-15 切换
- Key 树:全类型(String / Hash / List / Set / ZSet)增删改查
- INFO 仪表盘:服务器状态可视化
- CLI:直接敲 Redis 命令
- pub/sub:订阅 / 发布
支持的 MCP 工具:
| 工具 | 说明 |
|---|---|
redis_scan | 列 Key(glob 模式) |
redis_get | 取单 Key |
redis_set | 写 Key(TTL 可选) |
redis_del | 删除 Key |
redis_exec | 任意命令(HGETALL / ZRANGEBYSCORE 等) |
人用 vs AI 视角
人用查询
- 你在 SQL 编辑器 / 数据网格里执行的语句不走 AI policy(人用通道)
- 但仍受危险 SQL 检查约束:
- 永久拦:
DROP DATABASE/TRUNCATE/DELETE FROM xxx(无 WHERE) - 二次确认:可疑的
UPDATE/DELETE
- 永久拦:
- 所有执行仍然写审计
AI 走 db_query / db_execute
- 完全过 AI 策略引擎
- 出口走脱敏规则(密码字段自动
[REDACTED]) - 行数限制(默认 100,可在工具参数指定 limit)
- Redis 危险命令永久拦:
FLUSHALL/FLUSHDB/CONFIG/SHUTDOWN/DEBUG
经服务器 SSH 隧道连接
新建 / 编辑连接时,归属选了一台服务器,就默认经这台服务器的 SSH 隧道连数据库(表单里「经服务器 SSH 隧道访问」开关默认打开):
- 连接时自动建一条 SSH
-L端口转发,本机经127.0.0.1:<随机端口>访问,闲置一段时间后自动回收 - 数据库端口不用对公网开放,只听本机(
127.0.0.1)也能连 - 人用查询和 AI 的
db_query走同一条隧道 - 工作台底部状态栏显示「SSH 隧道」标记,表示当前连接正走隧道
主机 / 端口按服务器的视角填
开着隧道时,主机和端口是站在那台服务器上解析的,不是站在你的电脑上:
| 数据库在哪 | 主机 | 端口 |
|---|---|---|
| 就装在这台服务器上(含 Docker 映射到宿主机的端口) | 127.0.0.1 | 数据库实际监听的端口(如 3306) |
| 同内网的另一台机器 / 云数据库的内网地址 | 服务器能访问到的内网地址 | 该数据库的端口 |
别填服务器自己的公网 IP
填了服务器自己的公网地址,连接会从服务器绕到公网再连回自己,数据库看到的来源变成服务器的公网 IP,只授权了本机访问的账号会报 1045 Access denied for user 'xxx'@'<服务器公网 IP>'。数据库就在这台服务器上时,主机填 127.0.0.1。
不确定数据库监听在哪个端口,在服务器终端里执行:
bash
ss -tlnp | grep -E 'mysql|postgres|redis|mongo|:3306|:5432|:6379'0.0.0.0:3306 或 *:3306 表示所有地址都在听,主机填 127.0.0.1 即可;只显示某个内网 IP(如 10.0.0.5:3306)时,主机填那个 IP。
关掉隧道 = 直连
关掉开关后,Reeve 从你这台电脑直接连主机 / 端口:
- 数据库要对外开放该端口,并允许你的来源 IP 登录(云数据库通常要在控制台加白名单)
- 此时
127.0.0.1指的是你这台电脑,不是服务器
归属选「本机 / 本地」的连接一律直连,没有隧道开关。
表单提示与连接报错
新建 / 编辑连接时,表单会拦下两种常见填错(不阻止保存):
- 开着隧道,主机却填了这台服务器自己的地址 → 提示原因,一键改为 127.0.0.1
- 关着隧道,主机却填了
127.0.0.1→ 提示那是你这台电脑,一键打开隧道
经隧道连接失败时,报错会说清是哪一段的问题:
| 报错 | 含义 | 怎么办 |
|---|---|---|
| 隧道目标连不上 | SSH 已连通,但服务器上连不上填写的主机 / 端口——多半是端口填错,或数据库只监听了别的地址 | 在服务器上用上面的 ss -tlnp 查实际端口,再编辑连接 |
| 隧道被服务器禁止 | 服务器的 sshd 不允许端口转发 | 在 /etc/ssh/sshd_config 里设 AllowTcpForwarding yes 后重启 sshd |
| 认证失败 | 隧道是通的,用户名 / 密码不对,或账号没给这个来源授权 | 核对密码和账号授权的来源主机;数据库就在这台服务器上时,它看到的来源是 127.0.0.1 / localhost(Docker 里则是容器网关地址) |
表单提示与「隧道目标连不上」「隧道被服务器禁止」这两类报错需要 v2.5.0 之后发布的版本;更早的版本里,这类情况会笼统地报「连接被对端断开」。
用端口转发页自建隧道
也可以先在 端口转发 页建好隧道,再让连接指向它:主机填 127.0.0.1、端口填隧道的本地端口,归属选「本机 / 本地」(或关掉隧道开关)——否则 Reeve 会在你的隧道外面再套一层,变成从服务器去连服务器上的那个本地端口。
Reeve 的差异化
Navicat 没有、而 Reeve 立身的能力:
- 写操作走策略引擎 / 审批队列 / 审计;输出脱敏
[REDACTED:...] - 凭据明文前端永不可见;改密走自助重置 + 加密回写
- 连接树节点标「受控」徽标,把安全约束变成可见的能力