# 数据库初始化脚本

本目录包含用于初始化数据库的脚本，包括用户认证相关的表等。

## 用户表初始化

用户数据现在存储在PostgreSQL数据库中，表名为`users`。有两种方式可以初始化用户表：

### 1. 使用Python脚本

运行以下命令可以自动创建用户表和相关索引：

```bash
# 在项目根目录执行
python app/scripts/init_db.py
```

这将自动创建以下内容：
- 用户表结构
- 用户名索引

### 2. 使用SQL脚本

如果你想直接在PostgreSQL客户端中执行，可以使用提供的SQL脚本：

```bash
# 使用psql命令行工具执行
psql -U postgres -d dataops -f app/scripts/create_user_table.sql

# 或者直接在pgAdmin或其他PostgreSQL客户端中复制粘贴脚本内容执行
```

## 数据库连接配置

数据库连接配置在`app/core/system/auth.py`文件中的`get_pg_connection`函数中定义：

```python
pg_pool = psycopg2.pool.SimpleConnectionPool(
    1, 20,
    host="localhost",
    database="dataops",
    user="postgres",
    password="postgres",
    port="5432"
)
```

在生产环境中，建议将这些连接参数移至配置文件或环境变量中。

## 用户表结构

用户表（`users`）具有以下字段：

- `id` (VARCHAR(100)): 用户唯一标识符，主键
- `username` (VARCHAR(50)): 用户名，唯一非空
- `password` (VARCHAR(100)): 密码（使用base64编码），非空
- `created_at` (FLOAT): 创建时间戳，非空
- `last_login` (FLOAT): 最后登录时间戳
- `is_admin` (BOOLEAN): 是否为管理员，默认为false

## 用户数据迁移

如果您之前使用的是文件存储方式，可以使用以下命令将用户数据迁移到数据库：

```bash
python app/scripts/migrate_users.py
```

这个脚本会：
1. 读取`app/data/users.json`文件中的用户数据
2. 将数据导入到PostgreSQL数据库的`users`表中
3. 备份原始JSON文件

## 安全建议

在生产环境中，建议进行以下安全增强：

1. 使用更强的密码哈希算法（如bcrypt）替代base64编码
2. 将数据库连接参数存储在环境变量或安全的配置文件中
3. 为数据库用户设置最小权限原则
4. 启用PostgreSQL的SSL连接
5. 定期备份用户数据
