如何在MySQL中“提取”特权

问题描述

我同意Thilo- 如果您之前已经授予了它们特权,那么您将只能撤消这些特权。您不能在较高级别(例如表)上授予,然后在更详细的级别上撤消。我认为这是在MysqL参考手册MysqL 5.1第12.7.1.3章中描述的:

数据库,表,列或例程的特权是在每个​​特权级别上作为特权的逻辑或而形成的。例如,如果用户具有全局SELECT特权,则不能因缺少特权而拒绝特权数据库,表或列级别的特权。”

Devart已经描述了如何获得选择性特权。

解决方法

我想撤消表“事务”的2列中的更新特权。我希望用户可以访问所有其他表和数据。

mysql> REVOKE UPDATE (system,consumer) ON ledger.transact FROM 'foo'@'localhost';
ERROR 1147 (42000): There is no such grant defined for user 'foo' on host 'localhost' on table 'transaction'

以上似乎不起作用。