-- ============================================ -- 梦幻西游一站式运营管理平台 - 角色表初始化脚本 -- MySQL 8.4 兼容版本 -- 创建日期:2026-01-04 -- ============================================ -- 使用数据库 USE mhxy_web_vue; -- 设置字符集 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ============================================ -- 表:admin_roles(管理员角色表) -- ============================================ DROP TABLE IF EXISTS `admin_roles`; CREATE TABLE `admin_roles` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', `role_name` VARCHAR(50) NOT NULL COMMENT '角色名称', `role_code` VARCHAR(50) NOT NULL COMMENT '角色编码', `description` VARCHAR(255) NULL COMMENT '角色描述', `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态(1:正常, 0:禁用)', `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE INDEX `idx_role_code` (`role_code`), INDEX `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员角色表'; -- ============================================ -- 插入默认角色数据 -- ============================================ INSERT INTO `admin_roles` (`role_name`, `role_code`, `description`, `status`) VALUES ('超级管理员', 'super_admin', '拥有系统所有权限', 1), ('系统管理员', 'system_admin', '管理系统配置和用户', 1), ('运营管理员', 'operation_admin', '负责运营相关功能', 1), ('数据管理员', 'data_admin', '负责数据查询和导出', 1); -- ============================================ -- 修改 admin_users 表的 role_id 字段类型为 INT UNSIGNED -- ============================================ ALTER TABLE `admin_users` MODIFY COLUMN `role_id` INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '角色ID(1:超级管理员)'; -- ============================================ -- 删除 admin_users 表上的外键约束(如果存在) -- ============================================ -- 创建存储过程来删除外键 DROP PROCEDURE IF EXISTS drop_foreign_key_if_exists; DELIMITER $$ CREATE PROCEDURE drop_foreign_key_if_exists() BEGIN DECLARE fk_name VARCHAR(64); -- 查询外键名称 SELECT CONSTRAINT_NAME INTO fk_name FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = 'mhxy_web_vue' AND TABLE_NAME = 'admin_users' AND CONSTRAINT_NAME = 'fk_admin_users_role_id' AND REFERENCED_TABLE_NAME = 'admin_roles'; -- 如果外键存在,则删除 IF fk_name IS NOT NULL THEN SET @sql = CONCAT('ALTER TABLE `admin_users` DROP FOREIGN KEY `', fk_name, '`'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END IF; END$$ DELIMITER ; -- 执行存储过程 CALL drop_foreign_key_if_exists(); -- 删除存储过程 DROP PROCEDURE IF EXISTS drop_foreign_key_if_exists; -- ============================================ -- 添加外键约束 -- ============================================ ALTER TABLE `admin_users` ADD CONSTRAINT `fk_admin_users_role_id` FOREIGN KEY (`role_id`) REFERENCES `admin_roles` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE; -- ============================================ -- 更新现有管理员账号的角色ID -- ============================================ UPDATE `admin_users` SET `role_id` = 1 WHERE `username` = 'admin'; -- ============================================ -- 验证数据 -- ============================================ SELECT id, role_name, role_code, description, status, created_at FROM admin_roles; SELECT au.id, au.username, au.real_name, au.role_id, ar.role_name, au.status, au.created_at FROM admin_users au LEFT JOIN admin_roles ar ON au.role_id = ar.id; SET FOREIGN_KEY_CHECKS = 1; -- 初始化完成