在MySQL中,在授予一般权限后撤销权限

时间:2011-10-05 08:28:12

标签: mysql privileges

使用标准SQL - 已在PosgresQL和Oracle中重复执行此操作 - 我希望为schema1 中的所有表授予SELECT,除了 secret到user1

grant select on schema1.* to user1;
revoke select on schema1.users from user1;

收到错误:

ERROR 1147 (42000): There is no such grant defined for user 'user1' on host '%' on table 'secret'

我做错了什么?


显然这是标准的MySQL行为!!

让人们更容易理解使用MySQL的应用程序缺乏安全性 - 在MySQL中设置正确的用户安全性是非常困难的。

1 个答案:

答案 0 :(得分:5)

无。 MySQL不会将schema1.*通配符扩展到各个表,也不会存储“异常”。权限表存储授予的权限。因此,由于您实际上没有在schema1.users上授予任何内容,因此MySQL无法撤销。它归结为MySQL如何处理权限。