# 宝塔面板数据库部署指南 ## 📋 部署清单 本部署包包含以下文件: - `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个表) - ✅ 管理员权限设置完成 - ✅ 应用能够成功连接数据库 祝部署顺利!🎉