使用标准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中设置正确的用户安全性是非常困难的。
答案 0 :(得分:5)
无。 MySQL不会将schema1.*
通配符扩展到各个表,也不会存储“异常”。权限表存储授予的权限。因此,由于您实际上没有在schema1.users
上授予任何内容,因此MySQL无法撤销。它归结为MySQL如何处理权限。