225 lines
6.3 KiB
Markdown
225 lines
6.3 KiB
Markdown
|
|
# 宝塔面板数据库部署指南
|
|||
|
|
|
|||
|
|
## 📋 部署清单
|
|||
|
|
|
|||
|
|
本部署包包含以下文件:
|
|||
|
|
- `init_database.sql` - 完整的数据库初始化脚本(推荐使用)
|
|||
|
|
- `update_admin_user.sql` - 管理员权限设置脚本
|
|||
|
|
- `数据库完整结构-宝塔导入.sql` - 备用完整结构文件
|
|||
|
|
|
|||
|
|
## 🚀 快速部署步骤
|
|||
|
|
|
|||
|
|
### 第一步:创建数据库
|
|||
|
|
|
|||
|
|
1. 登录宝塔面板
|
|||
|
|
2. 进入【数据库】菜单
|
|||
|
|
3. 点击【添加数据库】
|
|||
|
|
4. 填写以下信息:
|
|||
|
|
- **数据库名**: `aigc_platform`
|
|||
|
|
- **用户名**: `aigc_platform`(建议与数据库名相同)
|
|||
|
|
- **密码**: 自动生成或自定义(请记录下来)
|
|||
|
|
- **字符集**: `utf8mb4`
|
|||
|
|
- **排序规则**: `utf8mb4_unicode_ci`
|
|||
|
|
5. 点击【提交】创建数据库
|
|||
|
|
|
|||
|
|
### 第二步:导入数据库结构
|
|||
|
|
|
|||
|
|
#### 方式一:使用phpMyAdmin(推荐)
|
|||
|
|
|
|||
|
|
1. 在宝塔面板【数据库】列表中,找到 `aigc_platform` 数据库
|
|||
|
|
2. 点击右侧的【管理】按钮,进入 phpMyAdmin
|
|||
|
|
3. 点击顶部菜单【导入】
|
|||
|
|
4. 点击【选择文件】,选择 `init_database.sql`
|
|||
|
|
5. 确保以下设置:
|
|||
|
|
- 字符集:`utf8mb4`
|
|||
|
|
- 格式:`SQL`
|
|||
|
|
6. 点击页面底部【执行】按钮
|
|||
|
|
7. 等待导入完成,显示成功提示
|
|||
|
|
|
|||
|
|
#### 方式二:使用命令行
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# SSH登录服务器后执行
|
|||
|
|
mysql -u aigc_platform -p aigc_platform < init_database.sql
|
|||
|
|
# 输入数据库密码后回车
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 第三步:设置管理员权限
|
|||
|
|
|
|||
|
|
导入完成后,需要设置管理员账号权限:
|
|||
|
|
|
|||
|
|
#### 方式一:自动设置(已包含在init_database.sql中)
|
|||
|
|
|
|||
|
|
如果使用 `init_database.sql` 导入,管理员权限已自动设置,无需额外操作。
|
|||
|
|
|
|||
|
|
#### 方式二:手动设置
|
|||
|
|
|
|||
|
|
如果需要手动设置或更改管理员,可以执行 `update_admin_user.sql`:
|
|||
|
|
|
|||
|
|
1. 在 phpMyAdmin 中点击【SQL】标签
|
|||
|
|
2. 将 `update_admin_user.sql` 的内容粘贴到文本框
|
|||
|
|
3. 点击【执行】
|
|||
|
|
|
|||
|
|
或者直接在SQL中执行:
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
UPDATE users
|
|||
|
|
SET role = 'ROLE_ADMIN',
|
|||
|
|
updated_at = CURRENT_TIMESTAMP
|
|||
|
|
WHERE email = '984523799@qq.com';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 第四步:验证数据库
|
|||
|
|
|
|||
|
|
在 phpMyAdmin 或命令行中执行以下查询,验证表结构是否正确:
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
-- 查看所有表
|
|||
|
|
SHOW TABLES;
|
|||
|
|
|
|||
|
|
-- 验证管理员用户(如果已注册)
|
|||
|
|
SELECT id, username, email, role, points, created_at
|
|||
|
|
FROM users
|
|||
|
|
WHERE email = '984523799@qq.com';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
应该看到以下表:
|
|||
|
|
- `users` - 用户表
|
|||
|
|
- `payments` - 支付表
|
|||
|
|
- `orders` - 订单表
|
|||
|
|
- `order_items` - 订单项表
|
|||
|
|
- `text_to_video_tasks` - 文生视频任务表
|
|||
|
|
- `image_to_video_tasks` - 图生视频任务表
|
|||
|
|
- `storyboard_video_tasks` - 分镜视频任务表
|
|||
|
|
- `task_queue` - 任务队列表
|
|||
|
|
- `task_status` - 任务状态表
|
|||
|
|
- `user_works` - 用户作品表
|
|||
|
|
- `user_membership` - 会员表
|
|||
|
|
- `user_activity_stats` - 用户活动统计表
|
|||
|
|
- `failed_tasks_cleanup_log` - 失败任务清理日志表
|
|||
|
|
|
|||
|
|
## 📝 数据库配置信息
|
|||
|
|
|
|||
|
|
部署完成后,需要在应用配置文件中填写数据库信息:
|
|||
|
|
|
|||
|
|
**文件位置**: `src/main/resources/application-prod.properties`
|
|||
|
|
|
|||
|
|
```properties
|
|||
|
|
# 数据库配置
|
|||
|
|
spring.datasource.url=jdbc:mysql://服务器IP:3306/aigc_platform?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
|||
|
|
spring.datasource.username=aigc_platform
|
|||
|
|
spring.datasource.password=你的数据库密码
|
|||
|
|
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**重要参数说明**:
|
|||
|
|
- `服务器IP`:
|
|||
|
|
- 如果应用与数据库在同一服务器:使用 `localhost` 或 `127.0.0.1`
|
|||
|
|
- 如果数据库在其他服务器:使用数据库服务器的IP地址
|
|||
|
|
- `你的数据库密码`: 第一步创建数据库时设置的密码
|
|||
|
|
|
|||
|
|
## 🔒 安全建议
|
|||
|
|
|
|||
|
|
### 1. 数据库访问权限
|
|||
|
|
|
|||
|
|
- 在宝塔面板【数据库】中,点击数据库的【权限】
|
|||
|
|
- 如果应用和数据库在同一服务器,设置为【本地服务器】
|
|||
|
|
- 如果需要远程访问,设置【所有人】或指定IP,但要确保密码强度足够
|
|||
|
|
|
|||
|
|
### 2. 数据库密码强度
|
|||
|
|
|
|||
|
|
- 使用包含大小写字母、数字、特殊字符的强密码
|
|||
|
|
- 密码长度建议16位以上
|
|||
|
|
|
|||
|
|
### 3. 定期备份
|
|||
|
|
|
|||
|
|
在宝塔面板设置自动备份:
|
|||
|
|
1. 进入【计划任务】
|
|||
|
|
2. 添加【备份数据库】任务
|
|||
|
|
3. 选择 `aigc_platform` 数据库
|
|||
|
|
4. 设置备份周期(建议每天备份)
|
|||
|
|
5. 设置保留份数(建议保留7-30份)
|
|||
|
|
|
|||
|
|
## ⚙️ 数据库性能优化
|
|||
|
|
|
|||
|
|
### 1. 连接池配置(已包含在application配置中)
|
|||
|
|
|
|||
|
|
```properties
|
|||
|
|
# 连接池配置(支持50-100人并发)
|
|||
|
|
spring.datasource.hikari.maximum-pool-size=50
|
|||
|
|
spring.datasource.hikari.minimum-idle=10
|
|||
|
|
spring.datasource.hikari.idle-timeout=300000
|
|||
|
|
spring.datasource.hikari.max-lifetime=1200000
|
|||
|
|
spring.datasource.hikari.connection-timeout=30000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. MySQL配置优化
|
|||
|
|
|
|||
|
|
在宝塔面板【软件商店】->【MySQL】->【设置】->【配置修改】中调整:
|
|||
|
|
|
|||
|
|
```ini
|
|||
|
|
# 根据服务器内存调整(示例为4GB内存)
|
|||
|
|
innodb_buffer_pool_size = 1G
|
|||
|
|
max_connections = 500
|
|||
|
|
query_cache_size = 128M
|
|||
|
|
tmp_table_size = 64M
|
|||
|
|
max_heap_table_size = 64M
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🐛 常见问题
|
|||
|
|
|
|||
|
|
### 1. 导入失败:字符集错误
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
- 确保数据库字符集为 `utf8mb4`
|
|||
|
|
- 在导入时选择字符集为 `utf8mb4`
|
|||
|
|
|
|||
|
|
### 2. 连接失败:Access denied
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
- 检查数据库用户名和密码是否正确
|
|||
|
|
- 检查数据库访问权限设置
|
|||
|
|
|
|||
|
|
### 3. 表已存在错误
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
- 如果是重新部署,先删除旧数据库或清空所有表
|
|||
|
|
- 在 phpMyAdmin 中选择数据库,点击【操作】->【清空数据库】
|
|||
|
|
|
|||
|
|
### 4. 管理员权限未生效
|
|||
|
|
|
|||
|
|
**原因**:用户还未注册
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
1. 先在前端使用 `984523799@qq.com` 注册账号
|
|||
|
|
2. 注册完成后,数据库会自动将该用户设置为管理员(因为 `data.sql` 中有自动更新脚本)
|
|||
|
|
3. 或者注册后手动执行 `update_admin_user.sql`
|
|||
|
|
|
|||
|
|
## 📊 数据库监控
|
|||
|
|
|
|||
|
|
在宝塔面板可以监控数据库状态:
|
|||
|
|
1. 进入【数据库】菜单
|
|||
|
|
2. 点击数据库名称右侧的【监控】
|
|||
|
|
3. 查看:
|
|||
|
|
- 查询次数
|
|||
|
|
- 慢查询
|
|||
|
|
- 连接数
|
|||
|
|
- 缓存命中率
|
|||
|
|
|
|||
|
|
## 📞 技术支持
|
|||
|
|
|
|||
|
|
如遇到问题,请检查:
|
|||
|
|
1. 宝塔面板【日志】中的 MySQL 错误日志
|
|||
|
|
2. 应用日志中的数据库连接错误
|
|||
|
|
3. 确保 MySQL 服务正在运行
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**部署完成标志**:
|
|||
|
|
- ✅ 数据库创建成功
|
|||
|
|
- ✅ 表结构导入成功(13个表)
|
|||
|
|
- ✅ 管理员权限设置完成
|
|||
|
|
- ✅ 应用能够成功连接数据库
|
|||
|
|
|
|||
|
|
祝部署顺利!🎉
|