# 数据库配置切换说明

## 当前配置

- **公网数据库地址**：
  - 主机: `120.79.247.16` 或 `aiedu.ireborn.com.cn`
  - 端口: `3306`
  - 数据库名: `kaopeilian`
  - 用户: `root`
  - 密码: `Kaopeilian2025!@#`

## 连接字符串

### 原始密码（包含特殊字符）
```
Kaopeilian2025!@#
```

### URL编码后的密码
```
Kaopeilian2025%21%40%23
```

### 完整的SQLAlchemy连接字符串
```
mysql+aiomysql://root:Kaopeilian2025%21%40%23@120.79.247.16:3306/kaopeilian?charset=utf8mb4
```

## 配置方法

### 方法1：使用环境变量文件（推荐）

创建 `.env` 文件：
```bash
DATABASE_URL=mysql+aiomysql://root:Kaopeilian2025%21%40%23@120.79.247.16:3306/kaopeilian?charset=utf8mb4
REDIS_URL=redis://localhost:6379/0
SECRET_KEY=dev-secret-key-for-testing-only-not-for-production
DEBUG=true
LOG_LEVEL=INFO
```

### 方法2：使用启动脚本

使用已配置好的启动脚本：
```bash
# 使用公网数据库
python3 start_remote.py

# 使用本地数据库（需要修改回本地配置）
python3 start_mysql.py
```

### 方法3：直接设置环境变量

```bash
export DATABASE_URL="mysql+aiomysql://root:Kaopeilian2025%21%40%23@120.79.247.16:3306/kaopeilian?charset=utf8mb4"
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
```

### 方法4：Docker Compose

`docker-compose.dev.yml` 已更新为使用公网数据库：
```yaml
environment:
  DATABASE_URL: mysql+aiomysql://root:Kaopeilian2025%21%40%23@120.79.247.16:3306/kaopeilian?charset=utf8mb4
  REDIS_URL: redis://redis:6379/0
```

## 测试连接

运行测试脚本验证连接：
```bash
python3 test_remote_db.py
```

## 切换回本地数据库

如需切换回本地数据库，修改连接字符串为：
```
mysql+aiomysql://root:root@localhost:3306/kaopeilian?charset=utf8mb4
```

## 注意事项

1. **密码编码**：密码中的特殊字符必须进行URL编码
   - `!` → `%21`
   - `@` → `%40`
   - `#` → `%23`

2. **网络连接**：确保开发机器能够访问公网数据库服务器

3. **安全性**：生产环境不要在代码中硬编码密码，使用环境变量或密钥管理服务

4. **性能**：公网数据库可能有一定延迟，开发时请注意

## 已更新的文件

- `start_mysql.py` - 启动脚本（已改为公网数据库）
- `start_remote.py` - 新增的公网数据库启动脚本
- `docker-compose.dev.yml` - Docker配置（已改为公网数据库）
- `test_remote_db.py` - 数据库连接测试脚本


