Skip to content

dhjz/sqlweb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SQL Web

一个开箱即用的 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 两个接口。

SQLite / MySQL 通用能力

  • 对象浏览:表 / 视图 / 触发器 / 索引 / 外键(MySQL)
  • 表结构:建表 / 删表 / 改表名 / 加列 / 删列 / 重命名列(MySQL 改列)
  • 索引 CRUD:普通索引 / 唯一索引
  • 数据浏览:分页 / 排序 / 模糊搜索 / WHERE 表达式过滤 / 单行增删改 / 批量删除
  • SQL 查询:多语句(分号分隔),每个语句单独返回执行时间 + 受影响行数;支持 SQL 美化格式化
  • DDL 双向转换:SQLite ⇄ MySQL(类型映射 + 引号风格 + 引擎注释剥离)
  • 导入导出:
    • 导出 DDL / INSERT / CSV / JSON / 完整备份 / 查询结果
    • 小文件(<5 MiB)HTTP 流式返回,大文件落盘给下载链接
    • 导入:CSV 进表、.sql 文件批量执行(事务)
  • 查询历史:持久化到 data/sqlweb.db,按数据库独立保存,upsert + 计数

SQLite 专属维护

  • VACUUM / REINDEX / PRAGMA integrity_check 一键调用
  • PRAGMA 面板:读取/设置 journal_mode / synchronous / foreign_keys 等运行时参数
  • MySQL 下自动隐藏不适用按钮,后端降级返回提示

Redis 管理

  • 连接管理: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
  • 驱动:
  • 前端: Vue 3(Options API)+ 原生 CSS,ACE Editor 做 SQL 高亮
  • 打包: 前端资源 embed.FS 编译进二进制,单文件分发

快速开始

开发模式(前端改了浏览器 Ctrl+F5 即可)

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 写到所有请求头里。


页面效果图

  • appimg目录

目录结构

.
├── 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/                       # 打包产物

About

Web 端数据库管理工具,一个二进制单文件搞定 SQLite / MySQL / Redis 的日常运维。后端 Go + 前端 Vue 3, 绿色无依赖。

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages