MySQL数据库:限制用户访问他们创建的数据

时间:2014-10-22 18:51:56

标签: c# mysql permissions

使用C#和MySQL,是否可以创建单独的用户帐户来访问数据库,并且只允许用户查看/修改/删除自己的数据?

1 个答案:

答案 0 :(得分:1)

在SQL中,您可以将用户或用户组的权限授予表和视图上的所有SIDU访问类型(选择,插入,删除,更新)。

如果您在行级别谈论更精细的粒度,我认为您需要将此信息存储在某个位置;最直接的方法是向需要限制的每个表添加诸如所有者字段和/或权限字段之类的内容。

另一种方法是创建一个或多个表,其中包含受限制或非受限制记录或内容的密钥,如项目或区域。

如果你有一个精心设计的所有权概念,那么第一个解决方案就不会非常难以编码。特权,现在和以后都足够灵活。

你会添加一层访问逻辑,它在最简单的情况下添加一个额外的where子句,如:..AND WHERE table.ownerID = @ownerid或类似的每个SELECT。对于每个INSERT,它将使用当前用户ID或组ID和/或其当前访问权限填充该字段。

规划用户组,因为一个用户通常需要完成另一个用户的工作,至少部分是...

额外的特权表需要更好的规划..

还要考虑工具&管理这些数据的功能..

<强>更新

由于现在很清楚,您希望设置基于Web的数据访问,您可以为每个用户创建单独的表,其中包含用户名或哈希或加密版本,用作每个表的前缀;或者,更常见的是,您可以为每个用户设置一个单独的数据库,同样使用以某种方式从用户名或用户ID派生的数据库名称。

每个用户使用单独数据库的文章更容易编写,因为在登录后,每个用户的所有操作都相同,即无需向SQL注入任何内容。

唯一可能的考虑因素可能来自提供商的技术或货币限制。有些软件包只允许少量数据库。在这种情况下,表前缀方法是下一个最可能的解决方案。

因此,您期望的用户数量也可能是决定因素..