Appearance
📊 数据库脚本
脚本文件
主脚本文件
文件位置: docs/sql/iboot.sql
包含内容:
- 数据库表结构
- 初始数据
- 系统默认配置
- 用户权限数据
文件说明:
- 完整的数据库初始化脚本
- 包含所有必需的表和索引
- 预置系统必要的基础数据
补丁脚本
文件位置: docs/sql/patch.sql
包含内容:
- 版本更新的增量脚本
- 表结构调整
- 数据修复脚本
使用说明:
- 如果文件存在且有内容,必须执行
- 按照文件内的版本顺序执行
- 建议备份后再执行
获取方式
方式一: 从源码获取
bash
# 克隆后端项目
git clone https://gitee.com/iteaj/iboot.git
# 进入SQL脚本目录
cd iboot/docs/sql
# 查看脚本文件
ls -l方式二: 直接下载
访问Gitee仓库直接下载:
数据库准备
创建数据库
sql
-- 创建数据库
CREATE DATABASE IF NOT EXISTS iboot
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_general_ci;
-- 使用数据库
USE iboot;配置SQL Mode
重要配置
在导入数据前,必须先配置MySQL的sql_mode,否则可能导致数据导入失败!
临时设置(当前会话)
sql
SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';永久设置(推荐)
Windows系统:
找到MySQL安装目录的 my.ini 文件(如果不存在则创建),添加:
ini
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONLinux系统:
编辑配置文件:
bash
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf在 [mysqld] 块下添加:
ini
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION重启MySQL服务:
bash
# Windows
net stop mysql
net start mysql
# Linux (根据系统不同选择)
sudo systemctl restart mysql
# 或
sudo service mysql restart验证配置:
sql
SELECT @@sql_mode;导入脚本
使用命令行导入
bash
# 方式一:直接导入
mysql -u root -p iboot < iboot.sql
# 方式二:登录后导入
mysql -u root -p
USE iboot;
SOURCE /path/to/iboot.sql;
# 如果有补丁脚本,继续导入
SOURCE /path/to/patch.sql;使用MySQL Workbench
- 打开MySQL Workbench
- 连接到MySQL服务器
- 选择
Server→Data Import - 选择
Import from Self-Contained File - 选择
iboot.sql文件 - 选择目标数据库
iboot - 点击
Start Import
使用Navicat
- 打开Navicat
- 连接到MySQL服务器
- 创建数据库
iboot - 右键数据库 →
执行SQL文件 - 选择
iboot.sql文件 - 点击开始执行
- 如有补丁脚本,重复步骤4-6
使用DBeaver
- 打开DBeaver
- 连接到MySQL服务器
- 创建数据库
iboot - 右键数据库 →
SQL编辑器→执行SQL脚本 - 选择
iboot.sql文件 - 点击执行
数据库结构
核心表说明
系统管理
sys_user- 用户表sys_role- 角色表sys_menu- 菜单权限表sys_dept- 部门组织表sys_dict- 数据字典表
物联网模块
iot_product- 产品表iot_device- 设备表iot_model- 物模型表iot_model_attr- 模型属性表iot_model_event- 模型事件表iot_model_func- 模型功能表
数据采集
collect_data- 采集数据表event_source- 事件源表device_group- 设备分组表
协议驱动
protocol_driver- 协议驱动表network_component- 网络组件表
初始账号
管理员账号
导入成功后,使用以下账号登录系统:
- 用户名:
admin - 密码:
admin123(请首次登录后立即修改)
测试账号
- 用户名:
test - 密码:
test123
安全提示
生产环境请务必修改默认密码!
数据备份
备份命令
bash
# 备份整个数据库
mysqldump -u root -p iboot > iboot_backup_$(date +%Y%m%d).sql
# 备份指定表
mysqldump -u root -p iboot iot_device iot_product > device_backup.sql
# 备份数据结构(不含数据)
mysqldump -u root -p --no-data iboot > iboot_structure.sql定期备份建议
生产环境建议:
- 每天自动备份一次
- 保留最近7天的备份
- 重要操作前手动备份
Linux定时备份脚本:
bash
#!/bin/bash
# 保存为 backup_mysql.sh
BACKUP_DIR="/data/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="iboot"
mkdir -p $BACKUP_DIR
mysqldump -u root -p你的密码 $DB_NAME > $BACKUP_DIR/iboot_$DATE.sql
# 删除7天前的备份
find $BACKUP_DIR -name "iboot_*.sql" -mtime +7 -delete
echo "Backup completed: $BACKUP_DIR/iboot_$DATE.sql"设置定时任务:
bash
# 编辑crontab
crontab -e
# 添加每天凌晨2点执行备份
0 2 * * * /path/to/backup_mysql.sh常见问题
导入失败
问题: 导入时报错字符集不支持
解决:
sql
-- 修改数据库字符集
ALTER DATABASE iboot CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;表已存在
问题: 提示表已存在
解决:
sql
-- 删除已有数据库(谨慎操作)
DROP DATABASE IF EXISTS iboot;
-- 重新创建
CREATE DATABASE iboot DEFAULT CHARACTER SET utf8mb4;sql_mode错误
问题: 导入时出现日期或除零错误
解决: 按照上面的 配置SQL Mode 章节配置
权限不足
问题: 没有权限创建数据库或表
解决:
sql
-- 授予权限
GRANT ALL PRIVILEGES ON iboot.* TO 'your_user'@'localhost';
FLUSH PRIVILEGES;版本升级
升级流程
- 备份现有数据库
bash
mysqldump -u root -p iboot > iboot_backup_before_upgrade.sql- 下载新版本补丁脚本
bash
git pull origin main- 执行补丁脚本
bash
mysql -u root -p iboot < docs/sql/patch.sql- 验证升级结果
- 检查系统是否正常启动
- 验证核心功能
- 检查数据完整性
版本回滚
如果升级失败,可以回滚到备份:
bash
# 删除当前数据库
mysql -u root -p -e "DROP DATABASE iboot;"
# 恢复备份
mysql -u root -p -e "CREATE DATABASE iboot;"
mysql -u root -p iboot < iboot_backup_before_upgrade.sql技术支持
遇到数据库相关问题:
- 查看 快速开始 中的数据库配置
- 在Gitee提交Issue
- 检查MySQL错误日志
提示
建议在测试环境先验证脚本,确认无误后再应用到生产环境。
