我正在尝试从MySQL数据库的特定表中撤消选择特权。 数据库级别限制有效,而表级别无效。
当我写“表演资助”时 这就是我得到的:
| GRANT USAGE ON *.* TO 'rachit'@'localhost' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |
| GRANT ALL PRIVILEGES ON `test123`.* TO 'rachit'@'localhost' |
| GRANT INSERT, UPDATE, DELETE ON `test123`.`names123` TO 'rachit'@'localhost'
如您所见,我想
从rachit用户撤消'test123'数据库的'names123'表上的选择特权,但是SELECT起作用。
为了方便理解,我在下面附上了屏幕截图。 https://ibb.co/GRtjXX7
答案 0 :(得分:0)
如果您GRANT ALL ON test123.* TO 'rachit'@'localhost'
,则无法通过运行REVOKE ALL ON test123.* TO 'rachit'@'localhost'
来删除一个表。
某些DBMS系统的特定DENY
选项专门拒绝访问特定表,但mysql并非如此。
您可以考虑编写脚本并逐个授予对每个表的访问权限
答案 1 :(得分:0)
讨论:
如果不是专门为GRANTed
,则不能为REVOKEd
。这是不太友好的Grant / Revoke语法和实施的不幸副作用。
您可以对SELECT
使用information_schema.TABLES
来自动发现所有其他表。并让SELECT
构建所需的GRANTs
。
可能的解决方法:
解决特定问题的另一种方法是将一个表移动到另一个数据库。然后GRANT
对该数据库有不同的权限。