Mysql查询查找具有所有给定权限的用户

时间:2010-02-10 16:45:48

标签: mysql

我想从权限表中找到具有所有给定权限的用户(userid)。 类似的东西:

选择userid,权限权限,其中包含all_of权限('view','delete','add','edit');

注意: 此查询与mysql权限无关。这是一个通用的问题,假设我有一个user_permissions表,其中包含以下字段&数据:


userid | permission
1 | view
1 | add
2 | view
2 | delete
2 | add
2 | edit
我问的查询应该返回

用户ID
2个

如果不清楚,请告诉我。

提前致谢

3 个答案:

答案 0 :(得分:1)

查看

SELECT * FROM information_schema.user_privileges
WHERE grantee = '\'root\'@\'localhost\''

OR

SHOW GRANTS FOR 'root'@'localhost';

答案 1 :(得分:0)

select userid, GROUP_CONCAT(DISTINCT permissions ORDER BY permissions DESC) as permissions_grouped from permissions where permissions in ('view', 'delete', 'add', 'edit') GROUP BY userid HAVING permissions_grouped = "view,edit,delete,add";

这将首先获得具有任何这些权限的所有用户,然后将他们的所有权限连接到有序字符串,然后拥有只会选择具有正确字符串的行。

编辑:格式化

答案 2 :(得分:0)

你也可以这样做:

    SHOW GRANTS FOR CURRENT_USER;