# 数据库初始化脚本 本目录包含用于初始化数据库的脚本,特别是用户认证相关的表和索引。 ## 用户表初始化 用户数据现在存储在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. 定期备份用户数据