394 lines
8.3 KiB
Markdown
394 lines
8.3 KiB
Markdown
# 数据库初始化使用说明
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
.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环境
|
||
|
||
1. 确保已安装MySQL,并且MySQL命令行工具在系统PATH中
|
||
2. 双击运行 `init-database.bat`
|
||
3. 按提示输入MySQL连接信息
|
||
4. 等待初始化完成
|
||
|
||
#### Linux/Mac环境
|
||
|
||
1. 确保已安装MySQL客户端
|
||
2. 给脚本添加执行权限:
|
||
```bash
|
||
chmod +x init-database.sh
|
||
```
|
||
3. 运行脚本:
|
||
```bash
|
||
./init-database.sh
|
||
```
|
||
4. 按提示输入MySQL连接信息
|
||
5. 等待初始化完成
|
||
|
||
### 方法二:使用MySQL命令行
|
||
|
||
#### 连接到MySQL
|
||
|
||
```bash
|
||
mysql -u root -p
|
||
```
|
||
|
||
#### 执行初始化脚本
|
||
|
||
```sql
|
||
SOURCE /path/to/.bin/mysql/sql/initAll.sql;
|
||
```
|
||
|
||
或者在命令行中执行:
|
||
|
||
```bash
|
||
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 等数据库管理工具:
|
||
|
||
1. 连接到MySQL服务器
|
||
2. 依次执行以下SQL文件:
|
||
- createDB.sql
|
||
- createTableUser.sql
|
||
- createTablePermission.sql
|
||
- createTableResource.sql
|
||
- createTableCourse.sql
|
||
- createTableLearning.sql
|
||
- createTableUserCenter.sql
|
||
- createTableAI.sql
|
||
- createTableSystem.sql
|
||
|
||
## 初始化后的验证
|
||
|
||
### 检查数据库是否创建成功
|
||
|
||
```sql
|
||
SHOW DATABASES LIKE 'school_news';
|
||
```
|
||
|
||
### 检查表是否创建成功
|
||
|
||
```sql
|
||
USE school_news;
|
||
SHOW TABLES;
|
||
```
|
||
|
||
应该看到约49张表。
|
||
|
||
### 检查默认数据是否插入成功
|
||
|
||
```sql
|
||
-- 检查默认用户
|
||
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用户权限不足
|
||
|
||
**解决方案**:
|
||
1. 确保使用的MySQL账号有创建数据库和表的权限
|
||
2. 使用root账号或具有足够权限的账号
|
||
|
||
### Q2: 执行脚本时提示 "Table already exists"
|
||
|
||
**原因**: 表已存在
|
||
|
||
**解决方案**:
|
||
1. 如果要重新初始化,先删除数据库:
|
||
```sql
|
||
DROP DATABASE IF EXISTS school_news;
|
||
```
|
||
2. 然后重新执行初始化脚本
|
||
|
||
### Q3: 中文乱码问题
|
||
|
||
**原因**: 字符集配置问题
|
||
|
||
**解决方案**:
|
||
1. 确保MySQL服务器配置了UTF-8字符集
|
||
2. 在my.cnf或my.ini中添加:
|
||
```ini
|
||
[client]
|
||
default-character-set=utf8mb4
|
||
|
||
[mysql]
|
||
default-character-set=utf8mb4
|
||
|
||
[mysqld]
|
||
character-set-server=utf8mb4
|
||
collation-server=utf8mb4_general_ci
|
||
```
|
||
3. 重启MySQL服务
|
||
|
||
### Q4: Windows脚本执行时中文显示乱码
|
||
|
||
**原因**: 命令行编码问题
|
||
|
||
**解决方案**:
|
||
1. 脚本已包含 `chcp 65001` 命令切换为UTF-8编码
|
||
2. 如果仍有问题,可以在命令行中手动执行:
|
||
```cmd
|
||
chcp 65001
|
||
```
|
||
|
||
### Q5: Linux脚本没有执行权限
|
||
|
||
**原因**: 文件权限问题
|
||
|
||
**解决方案**:
|
||
```bash
|
||
chmod +x init-database.sh
|
||
```
|
||
|
||
### Q6: 执行时提示 "mysql: command not found"
|
||
|
||
**原因**: MySQL客户端未安装或不在PATH中
|
||
|
||
**解决方案**:
|
||
|
||
**Windows**:
|
||
1. 将MySQL的bin目录添加到系统PATH
|
||
2. 或使用完整路径执行,例如:
|
||
```cmd
|
||
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -u root -p
|
||
```
|
||
|
||
**Linux/Mac**:
|
||
1. 安装MySQL客户端:
|
||
```bash
|
||
# 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`: 允许客户端从服务器获取公钥
|
||
|
||
## 备份与恢复
|
||
|
||
### 备份数据库
|
||
|
||
```bash
|
||
mysqldump -u root -p school_news > school_news_backup.sql
|
||
```
|
||
|
||
### 恢复数据库
|
||
|
||
```bash
|
||
mysql -u root -p school_news < school_news_backup.sql
|
||
```
|
||
|
||
### 备份单个表
|
||
|
||
```bash
|
||
mysqldump -u root -p school_news tb_sys_user > user_backup.sql
|
||
```
|
||
|
||
## 性能优化建议
|
||
|
||
### 1. 配置MySQL参数
|
||
|
||
在 my.cnf 或 my.ini 中:
|
||
|
||
```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. 定期维护
|
||
|
||
```sql
|
||
-- 分析表
|
||
ANALYZE TABLE tb_resource;
|
||
|
||
-- 优化表
|
||
OPTIMIZE TABLE tb_learning_record;
|
||
|
||
-- 修复表
|
||
REPAIR TABLE tb_sys_user;
|
||
```
|
||
|
||
### 3. 监控慢查询
|
||
|
||
```sql
|
||
-- 查看慢查询日志
|
||
SHOW VARIABLES LIKE 'slow_query_log%';
|
||
|
||
-- 查看长时间查询
|
||
SHOW PROCESSLIST;
|
||
```
|
||
|
||
## 数据迁移
|
||
|
||
### 从测试环境迁移到生产环境
|
||
|
||
1. **导出测试环境数据**
|
||
```bash
|
||
mysqldump -u root -p --single-transaction --quick school_news > school_news_test.sql
|
||
```
|
||
|
||
2. **在生产环境创建数据库**
|
||
```bash
|
||
mysql -u root -p < createDB.sql
|
||
```
|
||
|
||
3. **导入数据**
|
||
```bash
|
||
mysql -u root -p school_news < school_news_test.sql
|
||
```
|
||
|
||
4. **验证数据**
|
||
```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**: 本文件,使用指南
|
||
|
||
## 技术支持
|
||
|
||
如遇到问题,请检查:
|
||
1. MySQL版本是否为5.7或更高
|
||
2. 字符集是否为utf8mb4
|
||
3. 是否有足够的权限
|
||
4. SQL文件是否完整
|
||
|
||
## 更新日志
|
||
|
||
### v1.0.0 (2025-10-15)
|
||
- 初始版本
|
||
- 创建49张表
|
||
- 包含8个功能模块
|
||
- 添加默认数据和配置
|
||
|