-- ====================================================
-- 工作日志服务平台 - 数据库用户创建脚本
-- ====================================================
-- 版本：V1.0
-- 创建日期：2026-02-24
-- 说明：本脚本用于创建工作日志平台专用的数据库用户
-- ====================================================

-- 使用说明：
-- 1. 需要使用 root 用户或具有用户管理权限的用户执行
-- 2. 执行命令：mysql -u root -p < create_user.sql
-- 3. 创建成功后，使用新用户执行 init_database.sql

-- ====================================================
-- 1. 创建数据库用户
-- ====================================================

-- 删除已存在的用户（如果需要重新创建）
-- DROP USER IF EXISTS 'worklog'@'localhost';
-- DROP USER IF EXISTS 'worklog'@'%';

-- 创建本地连接用户
CREATE USER IF NOT EXISTS 'worklog'@'localhost' 
    IDENTIFIED WITH caching_sha2_password BY 'Wlog@123';

-- 创建远程连接用户（允许任意主机连接）
CREATE USER IF NOT EXISTS 'worklog'@'%' 
    IDENTIFIED WITH caching_sha2_password BY 'Wlog@123';

-- ====================================================
-- 2. 授予权限
-- ====================================================

-- 授予本地用户对 worklog 数据库的所有权限
GRANT ALL PRIVILEGES ON worklog.* TO 'worklog'@'localhost';

-- 授予远程用户对 worklog 数据库的所有权限
GRANT ALL PRIVILEGES ON worklog.* TO 'worklog'@'%';

-- ====================================================
-- 3. 刷新权限
-- ====================================================

FLUSH PRIVILEGES;

-- ====================================================
-- 4. 验证用户创建
-- ====================================================

-- 查看创建的用户
SELECT user, host, plugin FROM mysql.user WHERE user = 'worklog';

-- 查看用户权限
SHOW GRANTS FOR 'worklog'@'localhost';
SHOW GRANTS FOR 'worklog'@'%';

-- ====================================================
-- 用户信息说明
-- ====================================================
-- 
-- 数据库用户：worklog
-- 数据库密码：Wlog@123
-- 认证插件：caching_sha2_password (MySQL 8.0 默认)
-- 
-- 权限范围：
-- - worklog 数据库的所有权限（SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX 等）
-- - 不包含其他数据库的访问权限
-- - 不包含用户管理、系统管理等特权
-- 
-- 连接范围：
-- - worklog@localhost：仅允许本地连接
-- - worklog@%：允许任意主机连接（开发环境）
-- 
-- 安全建议：
-- 1. 生产环境应限制远程连接的主机范围，例如：
--    CREATE USER 'worklog'@'192.168.1.%' IDENTIFIED WITH caching_sha2_password BY 'Wlog@123';
-- 2. 定期更换数据库密码
-- 3. 根据实际需要调整权限范围
-- 
-- 测试连接：
-- mysql -u worklog -p -h localhost worklog
-- 输入密码：Wlog@123
--
-- ====================================================
-- 脚本执行完成
-- ====================================================
