如果我只想将数据分配给具有管理员角色的用户,我将如何在数据库模式中表示它?即我有一个用户表、角色表、user_roles 表,并且该特定用户链接到管理员角色。那么我如何才能仅为管理员用户指定信息?
最佳答案
EDIT4:所以,如果我理解,您有用户表、角色表以及将用户链接到角色的关联。
一个想法是将值放入角色表中,然后基本上您将拥有多个管理级别的多个角色。
或者您可以在关联表中创建其他字段,以参数化关联,但这会影响所有其他关联。 (或者您可以:X 位于 B 组中,选项 1=1、选项 2=42、选项 3=NULL,并根据组不同地对待选项字段)
其他想法,但我会完全不同:
您将组视为用户,并使用特殊字段调用 isGroup [True/False]。然后创建 groupAssociation 表来存储哪个用户属于哪个组。
示例:
USER
--Id-- --IsGroup--
A False
B False
C True
D True
GROUPASSOCIATION
--uid-- --BelongsTo--
A C
B D
C D
请注意,您可以级联说 C 包含在 D 中。 然后,您创建一个权限表并将组或用户与某些权限相关联。
PRIVILEGE
--Id-- --Name--
1 Access Area 1
2 Access Area 2
3 Modify user
4 Edit on StackOverflow
PRIVILEGEASSOCIATION
--uid-- --pid--
A 4
C 2
D 1
C 3
因此,用户 A 将拥有所有权限(一项直接权限,两项来自 C 组,一项用于 D 组,因为 C 包含在 D 中),而 B 将仅拥有一项权限(来自 D 组)
你的情况会更好吗?
<小时/>EDIT3:鉴于您最后的评论,这不再有效 GRANT 命令将帮助您解决问题。
您可以在那里看到它:GRANT
举个例子:
GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
您可以仅对列、所有表或所有数据库执行此操作
编辑:哦,好吧,让我检查一下组。我忘记了那部分。
EDIT2:我没有在 MySQL 中看到任何有关组权限调整的内容:this说这是不可能的,但它已经很旧了。但我遇到了另一个SO question他们正在使用 PHP 来管理组。
关于mysql - 如何仅将数据分配给具有特定角色的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5206997/