【发布时间】:2014-03-21 11:55:24
【问题描述】:
我们正在使用几个大致如下所示的表格:
| ID | DepartmentId | Data |
| 1 | 1 | ... |
| 2 | 1 | ... |
| 3 | 2 | ... |
| 4 | 3 | ... |
| 5 | 2 | ... |
我们有大约 200 个 MySQL 用户,每个用户都与一个或多个部门相关联(通过一个简单的 Username/DepartmentId 表) 我们希望将访问(SELECT、UPDATE)限制为每个用户的正确记录子集。
例如,一个
SELECT * FROM DataTable
与部门 1 和 3 关联的用户“Bob”应返回记录 1、2 和 4。 与部门 1 关联的用户“Alice”的相同查询应该只返回记录 1 和 2。
最好的方法是什么?
【问题讨论】:
-
您必须从应用程序端执行此操作。实际上,这很容易。
-
当您说 Mysql 用户时,您指的是 mysql.user 表中列出的 MySQL 用户,您连接到 DB跨度>
-
我的意思是实际的 MySQL 用户。我们让 MySQL 尽可能多地处理用户权限。这样,用户只有在实际连接和访问数据库时才能登录我们的应用程序。
-
@ErikvdW 看到您希望他们能够使用 sequel pro 或 phpmyadmin 等管理工具直接登录并使用表格。另外,我将修改我的答案以显示如何添加您需要的部门映射表,因为它不是行到用户,而是行到部门。逻辑还是基本一样的。