# 数据库配置说明 ## MySQL 数据库配置 本项目使用 MySQL 作为数据库。以下是配置说明。 ## 环境变量 | 变量名 | 说明 | 默认值 | |--------|------|--------| | `DB_HOST` | MySQL 主机地址 | `localhost` | | `DB_PORT` | MySQL 端口 | `3306` | | `DB_USER` | MySQL 用户名 | `root` | | `DB_PASSWORD` | MySQL 密码 | `password` | | `DB_NAME` | 数据库名称 | `license_admin` | ## SQL 文件说明 ### init.sql 完整的数据库初始化脚本,包括: - 创建数据库(如果不存在) - 创建表结构 - 插入测试数据 **使用方法:** ```bash mysql -u root -p < database/init.sql ``` ### schema.sql 仅包含表结构定义,不包含数据和数据库创建语句。 **使用方法:** ```bash mysql -u root -p license_admin < database/schema.sql ``` ## 手动创建数据库 ### 1. 登录 MySQL ```bash mysql -u root -p ``` ### 2. 创建数据库 ```sql CREATE DATABASE IF NOT EXISTS `license_admin` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci; ``` ### 3. 使用数据库 ```sql USE `license_admin`; ``` ### 4. 导入表结构 ```bash mysql -u root -p license_admin < database/schema.sql ``` 或者使用 `init.sql`(会自动创建数据库): ```bash mysql -u root -p < database/init.sql ``` ## Docker 环境 使用 Docker Compose 时,MySQL 会自动初始化: ```bash docker-compose up -d ``` 数据库会自动创建并初始化。 ## 表结构 ### licenses 表 | 字段名 | 类型 | 说明 | |--------|------|------| | `id` | bigint unsigned | 主键,自增 | | `key` | varchar(255) | 激活码,唯一索引 | | `bound_devices` | text | 已绑定设备列表(JSON 数组) | | `device_activations` | text | 设备激活时间(JSON 对象) | | `max_devices` | int | 最大设备数,默认 2 | | `created_at` | datetime(3) | 创建时间 | | `updated_at` | datetime(3) | 更新时间 | ## 数据备份 ### 备份数据库 ```bash mysqldump -u root -p license_admin > backup_$(date +%Y%m%d).sql ``` ### 恢复数据库 ```bash mysql -u root -p license_admin < backup_20240113.sql ``` ## 连接测试 ```bash mysql -h localhost -P 3306 -u root -p license_admin ``` ## 注意事项 1. **字符集**:数据库使用 `utf8mb4` 字符集,支持完整的 UTF-8 字符(包括 emoji) 2. **时区**:连接字符串中设置了 `parseTime=True&loc=Local`,确保时间正确解析 3. **连接池**:应用会自动配置连接池,最大空闲连接 10,最大打开连接 100 4. **表结构管理**:表结构需要手动创建和维护,应用不会自动迁移表结构