不言不语

您现在的位置是: 首页 >  数据库  >  MYSQL

MYSQL

RBAC用户权限管理数据库设计

2022-06-03MYSQL
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。

       在这种模型中,用户与角色之间,角色与权限之间,一般都是多对多的关系。RBAC用户权限管理数据表设计如下所示:

/* 角色表 */
CREATE TABLE IF NOT EXISTS role(
	id INT AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(32) UNIQUE NOT NULL,			/* 名称 */
	remark VARCHAR(32),							/* 备注 */
	system INT DEFAULT 0, 						/* 是否系统角色(系统角色不允许删除) */
	created INT DEFAULT 0						/* 时间 */
)ENGINE=MyISAM AUTO_INCREMENT=101 DEFAULT CHARSET=UTF8 ;

/* 用户与角色关系表 */
CREATE TABLE IF NOT EXISTS user_role(
	id INT AUTO_INCREMENT PRIMARY KEY,
	user_id INT NOT NULL,						/* 用户ID */
	role_id INT NOT NULL						/* 角色ID */
)ENGINE=MyISAM  DEFAULT CHARSET=UTF8;

/* 节点表 */
CREATE TABLE IF NOT EXISTS node(
	id INT AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(32) NOT NULL,					/* 名称(控制器名或动作名 ) */
	title VARCHAR(32) ,							/* 标题 */
	pid INT DEFAULT 0,							/* 父ID */
	path VARCHAR(32) DEFAULT ''					/* 路径,如 User/add */
)ENGINE=MyISAM AUTO_INCREMENT=101 DEFAULT CHARSET=UTF8;

/* 访问权限表 */
CREATE TABLE IF NOT EXISTS access(
	id INT AUTO_INCREMENT PRIMARY KEY,
	role_id INT  NOT NULL,						/* 角色ID */
	node_id INT NOT NULL						/* 节点ID */
)ENGINE=MyISAM DEFAULT CHARSET=UTF8;


文章评论