一尘不染

如何在MySQL中“提取”特权

sql

我想撤消表“事务”的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'

以上似乎不起作用。


阅读 125

收藏
2021-03-10

共1个答案

一尘不染

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

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

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

2021-03-10