mysql如何设计权限控制表

P粉602998670
发布: 2025-10-08 17:53:01
原创
270人浏览过
基于角色的访问控制模型通过用户表、角色表、权限表及关联表实现权限管理,支持灵活的权限校验与扩展。

mysql如何设计权限控制表

在MySQL中设计权限控制表时,通常采用基于角色的访问控制(RBAC, Role-Based Access Control)模型。这种模型结构清晰、易于维护和扩展。以下是典型的权限控制表设计思路和具体表结构。

1. 用户表(user)

存储系统用户的基本信息。

CREATE TABLE `user` (
  `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  `username` VARCHAR(50) NOT NULL UNIQUE,
  `password` VARCHAR(255) NOT NULL,
  `email` VARCHAR(100),
  `status` TINYINT DEFAULT 1 COMMENT '1:正常, 0:禁用',
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
登录后复制

2. 角色表(role)

定义系统中的角色,如管理员、普通用户、编辑等。

CREATE TABLE `role` (
  `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  `name` VARCHAR(50) NOT NULL UNIQUE COMMENT '如:admin, editor, viewer',
  `description` VARCHAR(255),
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP
);
登录后复制

3. 权限表(permission)

定义具体的权限项,通常是操作级别的控制,比如“用户管理-查看”、“订单管理-删除”。

CREATE TABLE `permission` (
  `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  `resource` VARCHAR(50) NOT NULL COMMENT '资源名,如 user, order',
  `action` VARCHAR(50) NOT NULL COMMENT '操作名,如 read, create, update, delete',
  `description` VARCHAR(255),
  UNIQUE KEY `uk_resource_action` (`resource`, `action`)
);
登录后复制

4. 用户角色关联表(user_role)

实现用户与角色的多对多关系。

创客贴设计
创客贴设计

创客贴设计,一款智能在线设计工具,设计不求人,AI助你零基础完成专业设计!

创客贴设计 51
查看详情 创客贴设计
CREATE TABLE `user_role` (
  `user_id` BIGINT,
  `role_id` BIGINT,
  PRIMARY KEY (`user_id`, `role_id`),
  FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON DELETE CASCADE,
  FOREIGN KEY (`role_id`) REFERENCES `role`(`id`) ON DELETE CASCADE
);
登录后复制

5. 角色权限关联表(role_permission)

定义角色拥有哪些权限。

CREATE TABLE `role_permission` (
  `role_id` BIGINT,
  `permission_id` BIGINT,
  PRIMARY KEY (`role_id`, `permission_id`),
  FOREIGN KEY (`role_id`) REFERENCES `role`(`id`) ON DELETE CASCADE,
  FOREIGN KEY (`permission_id`) REFERENCES `permission`(`id`) ON DELETE CASCADE
);
登录后复制

权限校验逻辑说明

当用户请求某个接口或操作时,系统按以下流程判断是否有权限:

  • 根据用户ID查询其所属的角色(通过 user_role 表)
  • 根据角色查询对应的所有权限(通过 role_permission 和 permission 表)
  • 检查当前请求的操作(如 resource='order', action='delete')是否在权限列表中

使用建议

  • 权限粒度可根据业务需要调整,可以细化到菜单、按钮级别
  • 可增加“数据权限”字段处理不同部门/组织的数据隔离
  • 生产环境中 password 应使用强哈希算法(如bcrypt)加密存储
  • 考虑加入日志表记录权限变更,便于审计
基本上就这些,这套结构能覆盖大多数Web系统的权限需求,不复杂但足够灵活。

以上就是mysql如何设计权限控制表的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号