mysql用户行级访问

时间:2013-02-27 05:45:21

标签: mysql

拥有包含以下内容的数据库

id | userid | name
1  |    1   | John
2  |    1   | John
3  |    2   | Joe
4  |    2   | Joe
5  |    2   | Joe
6  |    3   | Sue
7  |    3   | Sue

我需要一种可以创建数据库,然后创建用户的方法。我在mysql中创建的每个用户都限制他们访问其userid的数据。数据库中的每个数据库表都具有userid值。

所以他们是在阅读,更新,插入还是删除。如果它通过我附加到该数据库的特定mysql用户,我希望该用户只读取,更新,插入或删除其用户ID所在的位置。

我已经阅读了一些关于mysql触发器的东西,但是没有发现任何对我有用的东西。

我们有一个后端,其中包含数据并受userid限制。

该网站根据用户ID select * from articles where userid=1从该表中提取数据。现在,该代码可由用户修改。我想要一种方法来从文章和mysql中选择*只为那个mysql用户提供userid=1的行。目标是让每个用户都拥有自己的mysql用户登录到mysql数据库,这将限制为他们的用户ID的特定值。

有什么想法?非常感谢!

2 个答案:

答案 0 :(得分:3)

GoogleResult[0]有这个:

http://www.sqlmaestro.com/resources/all/row_level_security_mysql/

<强>抽象

本文包含使用MySQL等功能作为视图和触发器在MySQL 5.0及更高版本中实现行级安全性的分步指南。

答案 1 :(得分:0)

嘛!我建议为此制作一张桌子。对于整个应用程序

user_rights

id  |   user_id |   insert  |   update | delete | read
1   |   2       |   0       |   0      |    0   |   1

注意:1表示允许,0表示不允许。

现在,在您执行任何操作之前,先检查权限,然后执行其他操作。

详细方法,包括申请部分:

screens

id  |   title
1   |   articles
2   |   blog

user_rights

id  |   user_id |   insert  |   update | delete | read  |   screen_id
1   |   2       |   1       |   0      |    0   |   1   |       1
2   |   2       |   0       |   0      |    0   |   1   |       2

在此方法中,您可以允许屏幕级别访问。用户ID 2可以添加和查看文章,但他也可以查看博客。 我可能在这里使用不恰当的条款 但我希望你明白这个主意。