# 考培练系统 MySQL 数据库

> 最后更新：2026-01-21

## 📊 数据库实例清单

| 容器名称 | 端口 | 用途 | 密码 |
|---------|------|------|------|
| kaopeilian-mysql | 3307 | 演示版数据库 | nj861021 |
| kpl-mysql-dev | 3308 | 瑞小美数据库 | nj861021 |
| **prod-mysql** | **3309** | **多客户共享 + 管理后台** | **ProdMySQL2025!@#** |
| peilian-mysql | 3310 | 陪练试用版 | nj861021 |

## 📊 prod-mysql 数据库清单

| 数据库名 | 用途 |
|---------|------|
| **kaopeilian_admin** | **SaaS 管理后台（存储租户配置、AI Key 等）** |
| kaopeilian_hua | 华尔倍丽 |
| kaopeilian_yy | 杨扬宠物 |
| kaopeilian_hl | 武汉禾丽 |
| kaopeilian_xy | 芯颜定制 |
| kaopeilian_fw | 飞沃 |
| kaopeilian_ex | 恩喜成都总院 |

## 📊 管理库核心表（kaopeilian_admin）

| 表名 | 用途 |
|------|------|
| tenants | 租户基本信息（id, code, name, status） |
| **tenant_configs** | **租户配置（AI Key、数据库、Redis 等）** |
| ai_prompts | AI 提示词模板 |
| feature_switches | 功能开关 |
| admin_users | 平台管理员账户 |
| operation_logs | 操作审计日志 |

## 📊 AI 配置查询示例

```sql
-- 查询所有租户
SELECT id, code, name, status FROM kaopeilian_admin.tenants;

-- 查询某租户的 AI 配置
SELECT config_key, LEFT(config_value, 30) as value_preview
FROM kaopeilian_admin.tenant_configs 
WHERE tenant_id = (SELECT id FROM kaopeilian_admin.tenants WHERE code = 'ex')
  AND config_group = 'ai';

-- 查询所有租户的 AI_PRIMARY_API_KEY
SELECT t.code, tc.config_key, LEFT(tc.config_value, 30) as value_preview
FROM kaopeilian_admin.tenant_configs tc
JOIN kaopeilian_admin.tenants t ON tc.tenant_id = t.id
WHERE tc.config_group = 'ai' AND tc.config_key = 'AI_PRIMARY_API_KEY';
```

---

## 🔗 连接字符串示例

**演示版（kaopeilian-mysql:3307）**：
```bash
mysql -h 120.79.247.16 -P 3307 -u root -p'nj861021' kaopeilian
```

**多客户版（prod-mysql:3309）**：
```bash
mysql -h 120.79.247.16 -P 3309 -u root -p'ProdMySQL2025!@#' kaopeilian_admin
```

**管理库连接 URL**（后端使用）：
```
mysql+pymysql://root:ProdMySQL2025%21%40%23@prod-mysql:3306/kaopeilian_admin?charset=utf8mb4
```

---

## 🛡️ 安全配置

- ✅ 已配置 Docker 网络隔离
- ✅ 已启用字符集 UTF8MB4
- ✅ 敏感配置（AI Key 等）存储在 `tenant_configs` 表
- ✅ 后端通过环境变量（`ADMIN_DB_PASSWORD`）连接管理库
- ✅ `.env` 文件权限设置为 600
