Files
demo/src/main/resources/sql/init-auth-schema.sql
2026-03-17 00:57:08 +08:00

78 lines
3.8 KiB
SQL

-- ============================================
-- 权限体系增量建表 SQL
-- 适用于已有 demo 数据库,仅补建权限相关表
-- ============================================
USE `demo`;
SET @need_uk_username = (
SELECT CASE WHEN COUNT(1) = 0 THEN 1 ELSE 0 END
FROM information_schema.statistics
WHERE table_schema = DATABASE()
AND table_name = 'sys_user'
AND index_name = 'uk_username'
);
SET @sql_uk_username = IF(
@need_uk_username = 1,
'ALTER TABLE `sys_user` ADD UNIQUE KEY `uk_username` (`username`)',
'SELECT 1'
);
PREPARE stmt_uk_username FROM @sql_uk_username;
EXECUTE stmt_uk_username;
DEALLOCATE PREPARE stmt_uk_username;
CREATE TABLE IF NOT EXISTS `sys_role` (
`id` BIGINT NOT NULL COMMENT '主键ID',
`role_code` VARCHAR(64) NOT NULL COMMENT '角色编码',
`role_name` VARCHAR(128) NOT NULL COMMENT '角色名称',
`enabled` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用(0否 1是)',
`sort` INT NOT NULL DEFAULT 0 COMMENT '排序',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除(0正常 1删除)',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_role_code` (`role_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
CREATE TABLE IF NOT EXISTS `sys_menu` (
`id` BIGINT NOT NULL COMMENT '主键ID',
`parent_id` BIGINT NOT NULL DEFAULT 0 COMMENT '父级ID',
`menu_type` VARCHAR(16) NOT NULL COMMENT '类型(MENU/BUTTON)',
`menu_name` VARCHAR(128) NOT NULL COMMENT '菜单名称',
`path` VARCHAR(255) DEFAULT NULL COMMENT '路由路径',
`component` VARCHAR(255) DEFAULT NULL COMMENT '组件路径',
`permission` VARCHAR(128) DEFAULT NULL COMMENT '权限标识',
`icon` VARCHAR(64) DEFAULT NULL COMMENT '图标',
`visible` TINYINT NOT NULL DEFAULT 1 COMMENT '是否显示(0否 1是)',
`enabled` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用(0否 1是)',
`sort` INT NOT NULL DEFAULT 0 COMMENT '排序',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除(0正常 1删除)',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单权限表';
CREATE TABLE IF NOT EXISTS `sys_user_role` (
`id` BIGINT NOT NULL COMMENT '主键ID',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`role_id` BIGINT NOT NULL COMMENT '角色ID',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_role` (`user_id`, `role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表';
CREATE TABLE IF NOT EXISTS `sys_role_menu` (
`id` BIGINT NOT NULL COMMENT '主键ID',
`role_id` BIGINT NOT NULL COMMENT '角色ID',
`menu_id` BIGINT NOT NULL COMMENT '菜单ID',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_role_menu` (`role_id`, `menu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色菜单关联表';
-- 说明:
-- 1. 执行完本文件后重启应用
-- 2. 应用启动时会自动初始化 ADMIN 角色、基础菜单权限,并尝试将 admin 用户绑定为管理员