Files
AIGC/demo/database_baota_deploy/宝塔数据库部署指南.md
2025-11-13 17:01:39 +08:00

6.3 KiB
Raw Permalink Blame History

宝塔面板数据库部署指南

📋 部署清单

本部署包包含以下文件:

  • 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. 等待导入完成,显示成功提示

方式二:使用命令行

# 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中执行

UPDATE users
SET role = 'ROLE_ADMIN',
    updated_at = CURRENT_TIMESTAMP
WHERE email = '984523799@qq.com';

第四步:验证数据库

在 phpMyAdmin 或命令行中执行以下查询,验证表结构是否正确:

-- 查看所有表
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

# 数据库配置
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:
    • 如果应用与数据库在同一服务器:使用 localhost127.0.0.1
    • 如果数据库在其他服务器使用数据库服务器的IP地址
  • 你的数据库密码: 第一步创建数据库时设置的密码

🔒 安全建议

1. 数据库访问权限

  • 在宝塔面板【数据库】中,点击数据库的【权限】
  • 如果应用和数据库在同一服务器,设置为【本地服务器】
  • 如果需要远程访问设置【所有人】或指定IP但要确保密码强度足够

2. 数据库密码强度

  • 使用包含大小写字母、数字、特殊字符的强密码
  • 密码长度建议16位以上

3. 定期备份

在宝塔面板设置自动备份:

  1. 进入【计划任务】
  2. 添加【备份数据库】任务
  3. 选择 aigc_platform 数据库
  4. 设置备份周期(建议每天备份)
  5. 设置保留份数建议保留7-30份

⚙️ 数据库性能优化

1. 连接池配置已包含在application配置中

# 连接池配置支持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】->【设置】->【配置修改】中调整:

# 根据服务器内存调整示例为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个表
  • 管理员权限设置完成
  • 应用能够成功连接数据库

祝部署顺利!🎉