8.3 KiB
8.3 KiB
数据库初始化使用说明
目录结构
.bin/mysql/
├── init-database.bat # Windows批处理脚本
├── init-database.sh # Linux/Mac Shell脚本
├── 使用说明.md # 本文件
└── sql/
├── createDB.sql # 创建数据库
├── createTableUser.sql # 用户相关表
├── createTablePermission.sql # 权限相关表
├── createTableResource.sql # 资源管理相关表
├── createTableCourse.sql # 课程管理相关表
├── createTableLearning.sql # 学习管理相关表
├── createTableUserCenter.sql # 个人中心相关表
├── createTableAI.sql # 智能体相关表
├── createTableSystem.sql # 系统配置和日志相关表
├── initAll.sql # 一键执行所有SQL
├── README.md # 表结构详细说明
├── 表结构汇总.md # 表结构汇总
└── ER关系图.md # ER关系图
快速开始
方法一:使用自动化脚本(推荐)
Windows环境
- 确保已安装MySQL,并且MySQL命令行工具在系统PATH中
- 双击运行
init-database.bat - 按提示输入MySQL连接信息
- 等待初始化完成
Linux/Mac环境
- 确保已安装MySQL客户端
- 给脚本添加执行权限:
chmod +x init-database.sh - 运行脚本:
./init-database.sh - 按提示输入MySQL连接信息
- 等待初始化完成
方法二:使用MySQL命令行
连接到MySQL
mysql -u root -p
执行初始化脚本
SOURCE /path/to/.bin/mysql/sql/initAll.sql;
或者在命令行中执行:
cd .bin/mysql/sql
mysql -u root -p < createDB.sql
mysql -u root -p < createTableUser.sql
mysql -u root -p < createTablePermission.sql
mysql -u root -p < createTableResource.sql
mysql -u root -p < createTableCourse.sql
mysql -u root -p < createTableLearning.sql
mysql -u root -p < createTableUserCenter.sql
mysql -u root -p < createTableAI.sql
mysql -u root -p < createTableSystem.sql
方法三:使用数据库管理工具
使用 Navicat、DBeaver、phpMyAdmin 等数据库管理工具:
- 连接到MySQL服务器
- 依次执行以下SQL文件:
- createDB.sql
- createTableUser.sql
- createTablePermission.sql
- createTableResource.sql
- createTableCourse.sql
- createTableLearning.sql
- createTableUserCenter.sql
- createTableAI.sql
- createTableSystem.sql
初始化后的验证
检查数据库是否创建成功
SHOW DATABASES LIKE 'school_news';
检查表是否创建成功
USE school_news;
SHOW TABLES;
应该看到约49张表。
检查默认数据是否插入成功
-- 检查默认用户
SELECT * FROM tb_sys_user;
-- 检查默认部门
SELECT * FROM tb_sys_dept;
-- 检查默认角色
SELECT * FROM tb_sys_role;
-- 检查默认权限
SELECT * FROM tb_sys_permission;
-- 检查默认菜单
SELECT * FROM tb_sys_menu;
-- 检查资源分类
SELECT * FROM tb_resource_category;
-- 检查系统配置
SELECT * FROM tb_sys_config;
-- 检查AI配置
SELECT * FROM tb_ai_agent_config;
默认账号信息
管理员账号
- 用户名: admin
- 密码: 对应的bcrypt哈希值已在SQL中,原始密码请查看 createTableUser.sql 文件
- 邮箱: 3223905473@qq.com
- 角色: 管理员
- 部门: 超级部门
常见问题
Q1: 执行脚本时提示 "Access denied"
原因: MySQL用户权限不足
解决方案:
- 确保使用的MySQL账号有创建数据库和表的权限
- 使用root账号或具有足够权限的账号
Q2: 执行脚本时提示 "Table already exists"
原因: 表已存在
解决方案:
- 如果要重新初始化,先删除数据库:
DROP DATABASE IF EXISTS school_news; - 然后重新执行初始化脚本
Q3: 中文乱码问题
原因: 字符集配置问题
解决方案:
- 确保MySQL服务器配置了UTF-8字符集
- 在my.cnf或my.ini中添加:
[client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_general_ci - 重启MySQL服务
Q4: Windows脚本执行时中文显示乱码
原因: 命令行编码问题
解决方案:
- 脚本已包含
chcp 65001命令切换为UTF-8编码 - 如果仍有问题,可以在命令行中手动执行:
chcp 65001
Q5: Linux脚本没有执行权限
原因: 文件权限问题
解决方案:
chmod +x init-database.sh
Q6: 执行时提示 "mysql: command not found"
原因: MySQL客户端未安装或不在PATH中
解决方案:
Windows:
- 将MySQL的bin目录添加到系统PATH
- 或使用完整路径执行,例如:
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -u root -p
Linux/Mac:
- 安装MySQL客户端:
# Ubuntu/Debian sudo apt-get install mysql-client # CentOS/RHEL sudo yum install mysql # Mac brew install mysql-client
数据库连接配置
JDBC连接字符串
jdbc:mysql://localhost:3306/school_news?useUnicode=true&characterEncoding=utf8mb4&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
配置参数说明
useUnicode=true: 使用Unicode字符集characterEncoding=utf8mb4: 使用UTF-8编码,支持表情符号useSSL=false: 禁用SSL(开发环境)serverTimezone=Asia/Shanghai: 设置时区allowPublicKeyRetrieval=true: 允许客户端从服务器获取公钥
备份与恢复
备份数据库
mysqldump -u root -p school_news > school_news_backup.sql
恢复数据库
mysql -u root -p school_news < school_news_backup.sql
备份单个表
mysqldump -u root -p school_news tb_sys_user > user_backup.sql
性能优化建议
1. 配置MySQL参数
在 my.cnf 或 my.ini 中:
[mysqld]
# InnoDB缓冲池大小(建议设置为服务器内存的50-80%)
innodb_buffer_pool_size = 1G
# 连接数
max_connections = 500
# 查询缓存(MySQL 8.0已移除)
# query_cache_size = 64M
# 日志
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
2. 定期维护
-- 分析表
ANALYZE TABLE tb_resource;
-- 优化表
OPTIMIZE TABLE tb_learning_record;
-- 修复表
REPAIR TABLE tb_sys_user;
3. 监控慢查询
-- 查看慢查询日志
SHOW VARIABLES LIKE 'slow_query_log%';
-- 查看长时间查询
SHOW PROCESSLIST;
数据迁移
从测试环境迁移到生产环境
-
导出测试环境数据
mysqldump -u root -p --single-transaction --quick school_news > school_news_test.sql -
在生产环境创建数据库
mysql -u root -p < createDB.sql -
导入数据
mysql -u root -p school_news < school_news_test.sql -
验证数据
USE school_news; SELECT COUNT(*) FROM tb_sys_user; -- 验证其他关键表
开发规范
1. 表命名规范
- 系统表:
tb_sys_前缀 - 业务表:
tb_+ 业务名 - 关联表:
tb_+ 表名1 +_+ 表名2
2. 字段命名规范
- 使用小写字母和下划线
- 主键统一使用
id - 外键使用
表名_id - 布尔值使用
is_前缀 - 时间字段使用
_time后缀
3. 索引命名规范
- 主键:
pk_表名(默认) - 唯一索引:
uk_字段名 - 普通索引:
idx_字段名 - 组合索引:
idx_字段1_字段2
4. 注释规范
- 所有表必须有注释
- 所有字段必须有注释
- 注释使用中文,简洁明了
文档说明
- README.md: 详细的表结构说明文档
- 表结构汇总.md: 所有表的汇总列表
- ER关系图.md: 表关系图(Mermaid格式)
- 使用说明.md: 本文件,使用指南
技术支持
如遇到问题,请检查:
- MySQL版本是否为5.7或更高
- 字符集是否为utf8mb4
- 是否有足够的权限
- SQL文件是否完整
更新日志
v1.0.0 (2025-10-15)
- 初始版本
- 创建49张表
- 包含8个功能模块
- 添加默认数据和配置