# database-web **Repository Path**: xinhun1994/database-web ## Basic Information - **Project Name**: database-web - **Description**: 基于SpringBoot的Web版数据库操作系统,支持Oracle、MySQL、达梦、高斯、Redis等数据库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-11-10 - **Last Updated**: 2026-04-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 数据库管理系统 基于SpringBoot的Web版数据库操作系统,支持Oracle、MySQL、达梦、GaussDB、Redis等数据库,并集成AI智能助手能力。 ## 功能特性 1. **数据库连接管理** - 支持多种数据库类型(Oracle、MySQL、达梦、GaussDB、Redis) - 连接配置的增删改查 - 连接测试功能 2. **用户管理** - 系统用户维护 - 用户权限管理(角色:ADMIN、EXECUTE、QUERY) - 基于角色的访问控制(RBAC) 3. **数据库对象维护** - 表(Tables) - 视图(Views) - 索引(Indexes) - 同义词(Synonyms) - 存储过程(Procedures) - 触发器(Triggers) 4. **SQL查询和执行** - SQL查询支持分页 - SQL执行(INSERT、UPDATE、DELETE等) - 查询结果在线编辑 - SQL自动补全(Monaco Editor) - SQL格式化美化 - 查询历史记录 5. **事务管理** - 手动提交/自动提交切换 - 事务提交和回滚 6. **安全认证** - JWT Token认证 - 密码加密存储 - 基于角色的权限控制 7. **Redis管理** - Redis连接配置管理 - Key浏览、过滤、删除 - Value查看与编辑 8. **AI智能助手(数据库 Copilot)** - 自然语言转SQL(智能生成查询语句) - SQL优化与性能建议 - 查询结果智能分析和总结 - SQL安全审计与风险提示 - 面向业务的数据库问答 ## 技术栈 ### 后端 - **语言**: Java 21 - **框架**: Spring Boot 2.7.18 - **ORM**: Spring Data JPA, Hibernate - **安全**: Spring Security, JWT - **数据库**: H2 (内部存储) - **构建工具**: Maven ### 前端 - **框架**: React 18, TypeScript - **UI组件**: Ant Design 5 - **编辑器**: Monaco Editor (VS Code编辑器) - **路由**: React Router 6 - **HTTP客户端**: Axios - **构建工具**: Create React App, Node.js ### 支持的数据库 - **Oracle**: 使用 ojdbc8 驱动 - **MySQL**: 使用 mysql-connector-java 驱动 - **达梦数据库**: 需要手动安装驱动到本地Maven仓库 - **GaussDB**: 使用华为 GaussDB JDBC 驱动 - **Redis**: 使用 Spring Data Redis(Jedis 连接) ## 快速开始 ### 环境要求 - JDK 21 - Maven 3.6+ - Node.js 18+ (用于构建前端,打包时会自动下载) ### 运行项目 #### 开发模式 ```bash # 编译项目 mvn clean package # 运行项目 mvn spring-boot:run ``` #### 打包成可执行JAR 项目已配置为前后端一体化打包,会自动构建前端并打包进JAR文件。 **方式一:使用打包脚本(推荐)** ```bash # Linux/Mac(需要已安装JDK 21,并在必要时设置 JDK21_PATH 指向对应路径) ./package.sh # Windows package.bat ``` **方式二:使用Maven命令** ```bash # 清理并打包(会自动构建前端) mvn clean package -DskipTests ``` 打包完成后,可执行JAR文件位于:`target/database-web-1.0.2.jar` **运行JAR文件** ```bash # 直接运行 java -jar target/database-web-1.0.2.jar # 指定端口运行 java -jar target/database-web-1.0.2.jar --server.port=8080 # 指定配置文件运行 java -jar target/database-web-1.0.2.jar --spring.config.location=application.yml ``` 项目启动后,访问地址: - 前端页面:http://localhost:8083 - API接口:http://localhost:8083/api ## API接口 ### 连接管理 - `POST /api/connection` - 创建连接 - `PUT /api/connection/{id}` - 更新连接 - `DELETE /api/connection/{id}` - 删除连接 - `GET /api/connection/{id}` - 获取连接详情 - `GET /api/connection` - 获取所有连接 - `POST /api/connection/test` - 测试连接 ### 查询执行 - `POST /api/query/execute` - 执行查询 - `POST /api/query/update` - 执行更新 - `POST /api/query/update-record` - 更新记录 - `POST /api/query/{connectionId}/autocommit` - 设置自动提交 - `POST /api/query/{connectionId}/commit` - 提交事务 - `POST /api/query/{connectionId}/rollback` - 回滚事务 ### 数据库对象 - `GET /api/object/{connectionId}/tables` - 获取表列表 - `GET /api/object/{connectionId}/views` - 获取视图列表 - `GET /api/object/{connectionId}/indexes` - 获取索引列表 - `GET /api/object/{connectionId}/synonyms` - 获取同义词列表 - `GET /api/object/{connectionId}/procedures` - 获取存储过程列表 - `GET /api/object/{connectionId}/triggers` - 获取触发器列表 - `GET /api/object/{connectionId}/table-structure` - 获取表结构 ### 用户管理 - `POST /api/user` - 创建用户 - `PUT /api/user/{id}` - 更新用户 - `DELETE /api/user/{id}` - 删除用户 - `GET /api/user/{id}` - 获取用户详情 - `GET /api/user` - 获取所有用户 ### 查询历史 - `GET /api/query-history` - 获取查询历史记录 - `DELETE /api/query-history/{id}` - 删除查询历史记录 ### 认证 - `POST /api/auth/login` - 用户登录 - `POST /api/auth/logout` - 用户登出 - `GET /api/auth/user-info` - 获取当前用户信息 - `POST /api/auth/change-password` - 修改密码 ## 项目结构 ``` database-web/ ├── client/ # 前端项目 │ ├── src/ │ │ ├── components/ # React组件 │ │ ├── contexts/ # React Context │ │ ├── types/ # TypeScript类型定义 │ │ ├── utils/ # 工具函数 │ │ └── App.tsx # 主应用组件 │ ├── public/ # 静态资源 │ └── package.json # 前端依赖配置 ├── src/main/java/com/database/ │ ├── controller/ # REST控制器 │ ├── service/ # 业务逻辑层 │ ├── repository/ # 数据访问层 │ ├── model/ # 实体模型 │ ├── dto/ # 数据传输对象 │ ├── config/ # 配置类 │ ├── filter/ # 过滤器 │ ├── util/ # 工具类 │ └── enums/ # 枚举类 ├── src/main/resources/ │ └── application.yml # 应用配置 ├── data/ # H2数据库文件 ├── pom.xml # Maven配置 ├── package.sh # Linux/Mac打包脚本 └── package.bat # Windows打包脚本 ``` ## 开发指南 ### 前端开发 ```bash # 进入前端目录 cd client # 安装依赖 npm install # 启动开发服务器(默认端口3000) npm start # 构建生产版本 npm run build ``` 前端开发服务器会自动代理API请求到后端(http://localhost:8083) ### 后端开发 ```bash # 编译项目 mvn clean compile # 运行项目 mvn spring-boot:run # 运行测试 mvn test ``` ### 数据库初始化 项目使用H2数据库存储系统数据(连接配置、用户信息等)。首次启动时会自动创建表结构。 默认数据库文件位置:`./data/database.mv.db` 访问H2控制台:http://localhost:8083/h2-console ## 用户角色说明 系统支持三种用户角色: 1. **ADMIN(管理员)** - 拥有所有权限 - 可以管理用户、连接配置、执行所有SQL操作 2. **EXECUTE(执行角色)** - 可以管理数据库对象 - 可以执行SQL查询和更新 - 可以查看查询历史记录 3. **QUERY(查询角色)** - 可以管理数据库对象 - 只能执行SQL查询(SELECT),不能执行更新操作 - 可以查看查询历史记录 ### 默认账号 - **默认查询用户**:用户名 `query`,密码 `query` - 首次启动时自动创建,仅用于快速体验 - 建议在生产环境中修改密码或禁用该用户 ## 功能特性详解 ### SQL自动补全 - 支持数据库关键字自动补全 - 支持表名、视图名自动补全 - 支持字段名自动补全(根据表名动态获取) - 使用Monaco Editor提供类似VS Code的编辑体验 ### SQL格式化 - 支持多种数据库SQL格式化 - 自动关键字大写 - 智能缩进和对齐 - 支持MySQL、Oracle、PostgreSQL、SQL Server等 ### 查询历史 - 自动记录所有SQL查询历史 - 支持按时间、连接、用户筛选 - 可以快速重新执行历史查询 - 支持删除历史记录 ## 配置说明 ### 应用配置(application.yml) 主要配置项: - `server.port`: 服务端口(默认8083) - `spring.datasource.url`: H2数据库连接URL - `jwt.secret`: JWT密钥(生产环境请修改) - `jwt.expiration`: Token过期时间(毫秒) - `spring.redis.*`: Redis连接配置(host、port、超时及连接池等) - `ai.*`: AI相关配置(模型提供方、开关、限流、缓存等) ### 环境变量 可以通过环境变量覆盖配置: ```bash # 设置端口 export SERVER_PORT=8080 # 设置JWT密钥 export JWT_SECRET=your-secret-key # AI大模型相关配置(示例为豆包大模型) export DOUBAO_API_KEY=your-doubao-api-key export DOUBAO_BASE_URL=https://ark.cn-beijing.volces.com/api/v3/ export DOUBAO_MODEL=your-doubao-model-id ``` ## AI 功能简介 AI 功能详细设计可参考 `doc/AI功能设计文档.md`,核心能力包括: - SQL智能生成(NL2SQL):基于当前连接和库表结构,从自然语言自动生成SQL - SQL优化建议:对现有SQL进行性能分析和索引建议 - 结果分析与数据洞察:对查询结果进行自动解读和业务洞察输出 - AI对话助手:支持与数据库相关的自然语言问答、排障说明等 在前端中可通过 “AI 助手 / AIChat” 页面进行交互式体验。 ## 部署说明 ### 生产环境部署 1. **修改配置** - 修改 `application.yml` 中的JWT密钥 - 配置数据库连接(如使用外部数据库) - 设置合适的日志级别 2. **打包应用** ```bash ./package.sh ``` 3. **运行应用** ```bash java -jar target/database-web-1.0.2.jar ``` 4. **使用systemd管理(Linux)** ```bash # 创建服务文件 /etc/systemd/system/database-web.service [Unit] Description=Database Web Application After=network.target [Service] Type=simple User=your-user WorkingDirectory=/path/to/database-web ExecStart=/usr/bin/java -jar /path/to/database-web/target/database-web-1.0.2.jar Restart=always [Install] WantedBy=multi-user.target ``` ## 故障排除 ### 常见问题 1. **前端构建失败** - 确保Node.js版本 >= 18 - 删除 `client/node_modules` 和 `package-lock.json`,重新安装依赖 2. **数据库连接失败** - 检查数据库服务是否运行 - 验证连接配置(主机、端口、用户名、密码) - 检查网络连接和防火墙设置 3. **JWT Token过期** - 默认Token有效期为24小时 - 可以在 `application.yml` 中修改 `jwt.expiration` 4. **端口被占用** - 修改 `application.yml` 中的 `server.port` - 或使用命令行参数:`java -jar app.jar --server.port=8080` 5. **达梦数据库连接问题** - 确保已安装达梦数据库驱动到本地Maven仓库 - 检查驱动版本是否兼容 ## 注意事项 1. **安全建议** - 生产环境必须修改JWT密钥 - 使用强密码策略 - 定期更新依赖包 - 配置HTTPS(生产环境) 2. **数据库驱动** - 达梦数据库驱动需要单独下载并安装到本地Maven仓库 - Oracle驱动使用ojdbc8 - Redis连接使用Jedis 3. **数据存储** - 项目使用H2数据库存储连接配置和用户信息 - 生产环境建议使用外部数据库(MySQL、PostgreSQL等) - 定期备份 `data/` 目录 4. **性能优化** - 合理配置数据库连接池大小 - 对于大量数据查询,建议使用分页 - 定期清理查询历史记录 ## 许可证 本项目为内部使用项目。