MySQL数据库:限制用户访问他们创建的数据
本文关键字:他们 创建 数据 访问 用户 数据库 MySQL | 更新日期: 2023-09-27 18:27:25
使用C#和MySQL,是否可以创建单独的用户帐户来访问数据库,并且只允许用户查看/修改/删除自己的数据?
在SQL中,您可以将用户或用户组的权限授予表和视图上的所有SIDU访问类型(Select、Insert、Delete、Update)。
如果您讨论的是行级别的细粒度,我认为您需要将这些信息存储在某个地方;最直接的方法是向需要限制的每个表添加所有者字段和/或特权字段。
另一种方法是创建一个或多个表,这些表包含受限或非受限记录或内容的键,如项目或区域。。
如果您有一个精心设计的所有权概念&特权,无论是现在还是以后都足够灵活。
您可以添加一层访问逻辑,在最简单的情况下,它会向每个SELECT添加一个额外的where子句,例如:..AND WHERE table.ownerID = @ownerid
等。对于每个INSERT,它都会用当前用户ID或组ID和/或他当前的访问权限填充字段。。
为用户组制定计划,因为一个用户通常需要完成另一个用户的工作,至少部分是这样。。
额外特权表需要更好的规划。。
还要考虑工具&用于管理这些数据的函数。。
更新
既然现在很清楚,你想建立一个基于Web的数据访问,你可以为每个用户创建单独的表,其中包含用户名或其哈希或加密版本,用作每个表的前缀;或者,更常见的是,您可以为每个用户设置一个单独的数据库,同样,使用从用户名或用户ID派生的DB名称。
每个用户都有一个单独的DB的versiom更容易编写,因为登录后,每个用户的一切都将相同,即不需要向SQL中注入任何内容。
唯一可能的考虑可能来自供应商的技术或货币限制。有些包只允许使用少量的数据库。在这种情况下,表前缀方法是下一个最有可能的解决方案。
因此,你期望的用户数量可能也是一个决定性因素。。