Files
schoolNews/schoolNewsServ/.bin/mysql/使用说明.md
2025-10-15 10:39:51 +08:00

394 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 数据库初始化使用说明
## 目录结构
```
.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个功能模块
- 添加默认数据和配置