新闻中心

mysql如何设计权限控制表

2025-10-08
浏览次数:
返回列表
基于角色的访问控制模型通过用户表、角色表、权限表及关联表实现权限管理,支持灵活的权限校验与扩展。

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)

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

Modoer多功能点评系统2.5 精华版 Build 20110710 UTF8 Modoer多功能点评系统2.5 精华版 Build 20110710 UTF8

Modoer 是一款以本地分享,多功能的点评网站管理系统。采用 PHP+MYSQL 开发设计,开放全部源代码。因具有非凡的访问速度和卓越的负载能力而深受国内外朋友的喜爱,不局限于商铺类点评,真正实现了多类型的点评,可以让您的网站点评任何事与物,同时增加产品模块,也更好的网站产品在网站上展示。Modoer点评系统 2.5 Build 20110710更新列表1.同步 旗舰版系统框架2.增加 限制图片

Modoer多功能点评系统2.5 精华版 Build 20110710 UTF8 2 查看详情 Modoer多功能点评系统2.5 精华版 Build 20110710 UTF8
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如何设计权限控制表的详细内容,更多请关注其它相关文章!


# 您的  # 韩国海淘网站建设  # 大同优化seo  # 哪些网站需要推广员的  # 太原定制网站建设收费  # 黄陵百度关键词排名优化  # seo公司选9火星  # 如何开一个企业网站推广  # 宁夏seo教程招商加盟  # seo优化交叉链接  # 怀来网站建设服务  # 中文网  # 相关文章  # mysql  # 操作步骤  # 访问控制  # 全攻略  # 多个  # 镜像  # 多功能  # 离线  # ai  # access  # cad  # word 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 手机屏幕碎了但能正常使用怎么办 手机外屏碎裂的修复建议  css滚动区域卡顿如何改善_css滚动问题用will-change优化渲染  必由学在线入口 必由学网页版快速登录入口  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  初次安装JDK时环境变量如何正确配置_J*A_HOME与PATH设置规则讲解  如何在Promise链中有效终止错误处理后的执行  Node.js CSV 数据处理:基于字段值条件过滤整条记录的策略  Golang并发任务中错误如何聚合_Golang goroutine error收集方式  AI泡沫首次被“刺破”:GPU十年都无法存活!  微信网页版扫码登录入口 微信网页版二维码登录入口  在J*a里如何理解依赖关系的方向_依赖方向在模块结构中的作用  夸克浏览器网页版最新地址 夸克浏览器官方入口合集  Windows电脑怎么截图最方便_系统自带截图工具的5种神仙用法【技巧】  将HTML动态表格多行数据保存到Google Sheet的教程  纯CSS与HTML网格布局的HTML精简策略:SVG与JS方案解析  汽水音乐车机版8.9下载 汽水音乐车机版8.9版本安装入口  现代化 SciPy 一维插值:interp1d 的替代方案与最佳实践  机构:以往存储涨价周期小米利润率实际上有所改善 能转嫁给消费者等  Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议  Golang指针如何与map组合使用_Golang map指针组合实践  在python-socketio事件处理器中安全访问Flask应用上下文  Excel文件在线转换快速入口 Excel在线格式转换网站  Node.js CSV 数据处理:基于字段空值条件过滤整条记录的策略  使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性  荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】  拼多多赚钱渠道_拼多多收益来源  写好的html代码怎么运行出来_运行写好的html代码方法【教程】  css链接悬停下划线样式如何自定义_使用::after结合content和transition  铃兰之剑为这和平的世界希里技能组及加点推荐  Golang如何实现Web文件静态资源服务器_Golang静态资源服务器开发与实践  Django模型中自动计算可用余额的实现方法  AngularJS $http POST请求数据传递与Go后端接收实践  解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南  Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全  优化HTML表单样式:解决输入框焦点跳动与元素间距问题  抖音网页版快捷访问 抖音网页版网页版入口操作教程  Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置  J*aScript中localStorage数据的获取、清洗与格式化教程  使用 Pandas 高效处理 .dat 文件:字符清理与数据计算  中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】  在哪找SublimeJ远程工具_SFTP插件配置教程  mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤  解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常  邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧  Sublime Text怎么设置垂直标尺_Sublime配置Rulers规范代码长度  QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口  J*aScript中向JSON对象添加新属性的正确姿势  React Router 嵌套组件中 URL 重定向问题的解决方案  Lar*el 递归关系中排除指定分支的教程  创客贴用户入口官网登录 创客贴网页版电脑版系统 

搜索