使用标准SQL-在PosgresQL和Oracle中已多次重复执行此操作-我希望向Schema1中的所有表授予SELECT权限,但USER1的secret
除外
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中设置正确的用户安全性非常困难。
最佳答案
没有什么。 MySQL不会将schema1.*
通配符扩展到各个表,也不会存储“exceptions”。权限表存储授予的权限。因此,由于您实际上并未在schema1.users
上授予任何权限,因此MySQL无需撤销任何操作。它仅取决于MySQL如何处理权限。
关于mysql - 在MySQL中,在授予一般特权后撤销特权,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7658575/