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

8.3 KiB
Raw Blame History

数据库初始化使用说明

目录结构

.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. 给脚本添加执行权限:
    chmod +x init-database.sh
    
  3. 运行脚本:
    ./init-database.sh
    
  4. 按提示输入MySQL连接信息
  5. 等待初始化完成

方法二使用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 等数据库管理工具:

  1. 连接到MySQL服务器
  2. 依次执行以下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用户权限不足

解决方案:

  1. 确保使用的MySQL账号有创建数据库和表的权限
  2. 使用root账号或具有足够权限的账号

Q2: 执行脚本时提示 "Table already exists"

原因: 表已存在

解决方案:

  1. 如果要重新初始化,先删除数据库:
    DROP DATABASE IF EXISTS school_news;
    
  2. 然后重新执行初始化脚本

Q3: 中文乱码问题

原因: 字符集配置问题

解决方案:

  1. 确保MySQL服务器配置了UTF-8字符集
  2. 在my.cnf或my.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. 如果仍有问题,可以在命令行中手动执行:
    chcp 65001
    

Q5: Linux脚本没有执行权限

原因: 文件权限问题

解决方案:

chmod +x init-database.sh

Q6: 执行时提示 "mysql: command not found"

原因: MySQL客户端未安装或不在PATH中

解决方案:

Windows:

  1. 将MySQL的bin目录添加到系统PATH
  2. 或使用完整路径执行,例如:
    "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -u root -p
    

Linux/Mac:

  1. 安装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;

数据迁移

从测试环境迁移到生产环境

  1. 导出测试环境数据

    mysqldump -u root -p --single-transaction --quick school_news > school_news_test.sql
    
  2. 在生产环境创建数据库

    mysql -u root -p < createDB.sql
    
  3. 导入数据

    mysql -u root -p school_news < school_news_test.sql
    
  4. 验证数据

    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个功能模块
  • 添加默认数据和配置