mysql - 如何仅将数据分配给具有特定角色的用户?

标签 mysql sql database database-design

如果我只想将数据分配给具有管理员角色的用户,我将如何在数据库模式中表示它?即我有一个用户表、角色表、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/

相关文章:

MySQL 存储过程 : Executing prepared statement with IN parameter in select statement throws "Error Code: 1054 Unknown column"

java - 更新Android的Sqlite和ContentValues中的值

java - 数据源与简单连接数据库

mysql - 如何删除连接dbms中记录的笛卡尔组合

php - 直接 MySQL 结果与转换为 JSON?

php - Laravel 5.4 查询生成器存在 groupBy 问题

sql - 从数据库表中选择重复条目

mysql - 带有嵌入式选择查询的 MySQL 触发器中的死锁

java.sql.SQLException : Can not issue data manipulation statements with executeQuery(). 23

database - 为微服务横向扩展/水平扩展数据库的最佳实践或设计