如何在MySQL中设置表级权限

问题描述 投票:0回答:2

我试图从MySQL DB中撤消特定表中的select权限。数据库级别限制正在运行,但表级别不是。

当我写“show grants”这就是我得到的:

| 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' 

正如你在上面我所看到的,我想

在'test123'数据库的'names123'表中撤销rachit用户的select权限,但是SELECT正在运行。

我已附上下面的截图,以便更好地理解。 https://ibb.co/GRtjXX7

mysql mariadb privileges
2个回答
0
投票

如果你GRANT ALL ON test123.* TO 'rachit'@'localhost'你不能通过运行REVOKE ALL ON test123.* TO 'rachit'@'localhost'删除一个表。

一些DBMS系统特别是DENY选项,专门拒绝访问特定的表,但这不是mysql的情况。

您可以考虑编写脚本并逐个访问每个表


0
投票

讨论:

如果它不是特别GRANTed,它不能是REVOKEd。这是不那么用户友好的Grant / Revoke语法和实现的不幸副作用。

你可以使用SELECT对抗information_schema.TABLES来自动发现所有其他表。并让SELECT建立所需的GRANTs

可能的解决方法:

解决特定问题的另一种方法是将一个表移动到另一个数据库。然后GRANT对该数据库的不同权限。

© www.soinside.com 2019 - 2024. All rights reserved.