多级跳板机友好的 MySQL 桌面客户端 —— 把 SSH 跳板从「雾中一根管子」变成「可观测的路由器」。
状态:v0.1 开发中(Week 1 vertical slice 已打通)。完整范围与进度见 docs/PLAN.md 与 docs/ROADMAP.md。
市面上的 SQL 桌面客户端(DBeaver / TablePlus / Navicat / DataGrip)几乎都把 SSH 隧道当「雾中一根管子」处理——单跳、黑盒,出错不知道哪一跳挂了。但生产环境里多级跳板机(堡垒机 → 内网堡垒 → 业务跳板 → MySQL)是常态。
tiny-sql 把每一跳都当成 UI 上的一等公民:
- 原生多跳 SSH,不用手动
ssh -L拼链路、改~/.ssh/config - 可视化跳板拓扑,连接失败时高亮断点的那一跳
- keepalive 感知断开,隧道任意一跳挂掉 180s 内推送到 UI(v0.1 规划)
- 纯 Rust 异步 SSH(russh),跨平台无需系统
ssh/sshpass
自用 + 同事可用 + 开源。不收费、不联网、仅本地。
| 层 | 选型 |
|---|---|
| 桌面框架 | Tauri 2.x |
| 前端 | Next.js 16 (Turbopack) + React 19 + TypeScript + Tailwind CSS 4 |
| 后端 | Rust (Edition 2021, MSRV 1.77.2) + Tokio |
| SSH 隧道 | russh 0.54(N 跳,纯 Rust 异步) |
| 数据库 | sqlx 0.8(MySQL;v0.2 加 PostgreSQL) |
v0.1 后续接入:shadcn/ui、Zustand、i18next、@xyflow/react(拓扑图)、known_hosts + TOFU。详见 ROADMAP。
- Node.js (LTS)
- pnpm 11+
- Rust (MSRV 1.77.2)
- just(命令运行器)
- Tauri 2 系统依赖(参考 Tauri 官方文档)
just install # pnpm install + cargo fetch
just dev # 启动 Tauri 完整开发环境(前后端热重载)
just dev-web # 仅启动 Next.js 前端(localhost:3000)just build # 生产构建(桌面应用,出 .dmg / .app)
just build-web # 仅构建前端(静态导出到 out/)| 命令 | 说明 |
|---|---|
just dev |
启动 Tauri 开发模式(前后端热重载) |
just dev-web |
仅启动 Next.js 前端 |
just build |
生产构建桌面应用 |
just build-web |
仅构建前端资源 |
just build-debug |
构建 Debug 版本(含调试符号) |
just check |
提交前一键自检(fmt 检查 + clippy + 测试 + 前端 build,对齐 CI) |
just lint |
完整代码检查(tsc + Clippy) |
just lint-rust |
仅 Rust 检查(Clippy) |
just lint-web |
仅前端类型检查(tsc) |
just fmt |
格式化 Rust 代码 |
just fmt-check |
仅检查格式不修改(CI 用) |
just test |
Rust 单元测试(workspace) |
just test-integration |
integration 测试(连本地 MySQL,需 .env 设 TINY_SQL_TEST_MYSQL_URL,见 .env.example) |
just version <ver> |
同步更新各配置版本号(如 just version 0.2.0) |
just release <tag> |
🚀 一键发布:更新版本号 + Commit + 打 Tag + 推送触发云端构建(如 just release v0.1.0) |
just clean |
清理构建产物 |
crates/ # Rust workspace 成员(与 Tauri 解耦,未来可独立 publish)
├── ssh-multihop/ # N 跳 SSH 隧道(russh,Tauri-free)
└── db-driver/ # MySQL driver(v0.1 具体 struct,v0.2 extract trait)
src-tauri/ # Tauri 壳
├── src/
│ ├── lib.rs # Tauri 入口 + commands
│ └── main.rs
├── capabilities/ # 权限配置
└── tauri.conf.json
src/ # 前端源码(Next.js App Router)
└── app/ # layout / page / globals.css
docs/ # 项目文档
├── REQUIREMENTS.md # 需求文档
├── PLAN.md # 开发计划(按周)
├── ARCHITECTURE.md # 架构设计(数据流 / 状态机 / 错误模型)
└── ROADMAP.md # 路线图(v0.1 / v0.2 / v0.3+)
CHANGELOG.md # 变更日志
justfile # 项目命令入口
v0.1 尚未发布。发布后前往 Releases 下载。
v0.1 仅提供 macOS(Apple Silicon + Intel) .dmg;Windows / Linux 推到 v0.3。
v0.1 暂未配置代码签名证书。安装 .dmg 后首次打开如果提示**"已损坏,无法打开"**,在终端执行:
xattr -cr /Applications/tiny-sql.app然后重新打开即可。
MIT