一个开箱即用的 Web 端数据库管理工具,一个二进制单文件搞定 SQLite / MySQL / Redis 的日常运维。后端 Go + 前端 Vue 3, 绿色无依赖。
项目名是
SQL Web,内部包名sql-web。
| 驱动 | 接入方式 | 适用场景 |
|---|---|---|
| SQLite | 上传 .db / .db3 / .sqlite / .zip,或连接服务器本地路径 |
本地数据、嵌入式应用、分析脚本 |
| MySQL | 远程连接(host/port/user/password/database) | 已有 MySQL 实例,想有个轻量 GUI |
| Redis | 远程连接(host/port/password) | 缓存巡检、key 排查、TTL 调整 |
驱动统一抽象在 service/dbdrv,新增驱动只需实现 Driver / Handle 两个接口。
- 对象浏览:表 / 视图 / 触发器 / 索引 / 外键(MySQL)
- 表结构:建表 / 删表 / 改表名 / 加列 / 删列 / 重命名列(MySQL 改列)
- 索引 CRUD:普通索引 / 唯一索引
- 数据浏览:分页 / 排序 / 模糊搜索 / WHERE 表达式过滤 / 单行增删改 / 批量删除
- SQL 查询:多语句(分号分隔),每个语句单独返回执行时间 + 受影响行数;支持 SQL 美化格式化
- DDL 双向转换:SQLite ⇄ MySQL(类型映射 + 引号风格 + 引擎注释剥离)
- 导入导出:
- 导出 DDL / INSERT / CSV / JSON / 完整备份 / 查询结果
- 小文件(<5 MiB)HTTP 流式返回,大文件落盘给下载链接
- 导入:CSV 进表、
.sql文件批量执行(事务)
- 查询历史:持久化到
data/sqlweb.db,按数据库独立保存,upsert + 计数
VACUUM/REINDEX/PRAGMA integrity_check一键调用- PRAGMA 面板:读取/设置
journal_mode/synchronous/foreign_keys等运行时参数 - MySQL 下自动隐藏不适用按钮,后端降级返回提示
- 连接管理:host/port/password,启动期
[init]拉起,带PingTest - DB 切换:0-15 号库,自动展示每个 db 的 key 数量
- Key 列表:按前缀模糊查询,超过 2000 个引导加关键字
- Key 操作:Get / Set(含 TTL)/ Del,支持 String 类型可视化编辑
- 服务端信息:版本 / 模式 / 角色 / 运行时间 / 内存占用 / 各 db 统计
- 连接管理:所有连接记录持久化到
data/sqlweb.db,启动自动重连上次活跃连接;支持"测试连接"避免配错 - 可选登录:
-pwd <password>启用 MD5 token 鉴权,前端登录页 /X-Token头;不指定则放行 - CORS + 静态代理:单二进制同时提供 API 和前端 SPA
- 路径安全:zip 上传做 zip-slip 防护,下载做路径遍历校验
- panic 兜底:每个请求用
recoverMiddleware包裹,避免单请求崩溃拖垮服务
- 后端: Go 1.25 + 标准库
net/http+embed.FS - 驱动:
- SQLite:
glebarez/sqlite(纯 Go,无 CGO)+gorm - MySQL:
go-sql-driver/mysql - Redis:
redis/go-redis/v9
- SQLite:
- 前端: Vue 3(Options API)+ 原生 CSS,ACE Editor 做 SQL 高亮
- 打包: 前端资源
embed.FS编译进二进制,单文件分发
Windows:
dev.bat或手动:
go run . -dev -p 8002打开 http://localhost:8002 即可使用。-dev 模式下前端从磁盘 webapp/ 实时读取,改 HTML/JS/CSS 后刷新即可;后端 Go 代码改了仍需重启。
build.bat打包脚本会同时产出:
| 产物 | 用途 |
|---|---|
dist/sql-web |
Linux arm64 编译产物 |
dist/sql-web_debug.exe |
Windows 控制台版本(可看日志) |
dist/sql-web.exe |
Windows GUI 版本(-H=windowsgui,无控制台窗口) |
启动:
# Windows GUI 版,无控制台日志
dist\sql-web.exe -p 8002
# 或调试版(有控制台日志)
dist\sql-web_debug.exe -p 8002
# Linux
./dist/sql-web -p 8002-p <port> 监听端口,默认 40126
-dev 开发模式:从磁盘读 webapp,改前端不用重启
-pwd <pass> 启用密码登录(token = MD5(pass)),不传则不启用
示例:启用鉴权 + 指定端口
./dist/sql-web -p 8080 -pwd my-secret启动后前端会跳到登录页,密码即 my-secret,登录后 X-Token 写到所有请求头里。
.
├── main.go # 入口:参数解析、embed 切换、recover 中间件
├── build.bat / dev.bat # 打包 / 开发脚本
├── go.mod / go.sum
├── service/
│ ├── dbdrv/ # 驱动抽象:Driver / Handle / ConnCfg / 注册表 / 引号工具
│ │ ├── sqlite_drv.go # SQLite 实现
│ │ ├── mysql_drv.go # MySQL 实现
│ │ └── ...
│ ├── sqlite/ # 连接记录 model + DefaultConnMgr(data/sqlweb.db)
│ ├── redis/ # Redis 客户端 + HTTP API
│ ├── handler/ # 各 API handler
│ │ ├── db.go # /api/dbs CRUD + 上传 + zip 解压
│ │ ├── connections.go # /api/connections 连接管理
│ │ ├── table.go # /api/dbs/{n}/tables/...
│ │ ├── data.go # /api/dbs/{n}/rows ... + CSV 导入 + 批量删除
│ │ ├── query.go # SQL 执行 + 美化
│ │ ├── export.go # DDL/INSERT/CSV/JSON 导出 + 下载
│ │ ├── history.go # 查询历史
│ │ ├── pragma.go # PRAGMA 读写(SQLite only)
│ │ └── auth.go # 登录 / 鉴权状态
│ ├── router/ # 路由注册 + CORS + 鉴权中间件
│ ├── utils/ # 工具:响应包装 / DDL 转换 / SQL 切分 / SQL 美化 / 鉴权
│ └── e2etest/ # 端到端 API 测试 + 报告
├── webapp/ # 前端
│ ├── index.html
│ └── static/
│ ├── api.js / index.js / utils.js / index.css
│ ├── ace/ # SQL 编辑器
│ └── components/ # 各 Vue 组件(数据浏览 / 表设计 / 查询 / Redis ...)
├── plans/ # 实施计划文档
├── uploads/ # 运行时:上传的数据库 + 导出文件
├── data/
│ └── sqlweb.db # 运行时:连接记录 + 查询历史
└── dist/ # 打包产物



