【问题标题】:ALL PRIVILEGES except one table in MySQL [duplicate]除了MySQL中的一个表之外的所有特权[重复]
【发布时间】:2014-08-03 23:09:38
【问题描述】:

我想授予用户所有权限。

为此我愿意:

GRANT ALL PRIVILEGES TO 'carl'@'%';

现在,我想撤销用户 carl 对指定表的权限。我现在是否必须单独撤销 ALL PRIVILEGES 和 GRANT 每个表,还是有另一种方法来授予 ALL PRIVILEGES 并撤销特殊的?

感谢您的帮助。

托马斯

【问题讨论】:

  • 您应该撤销ALL 权限和您需要的高级权限。

标签: mysql privileges


【解决方案1】:

或者还有其他方法可以授予所有权限并撤销特殊权限 一个?

不,没有任何捷径可以做到这一点。您必须从用户处撤销ALL PRIVILEGE,然后分别为每个表撤销GRANT

REVOKE ALL PRIVILEGES ON db.* FROM 'carl'@'%'; 

虽然有一个选项可以自动执行 GRANTING 所有表的这项任务,分别使用以下脚本:

伪代码

1. You can list out all tables using `SHOW TABLES;`

2. for each item is on table list

3. if(item != "specific table name") then
   GRANT table privilege to user

看到这个类似的帖子MySQL grant all privileges to database except one table

【讨论】:

    【解决方案2】:

    要撤销,请使用:

    REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ...
    ON {tbl_name | * | *.* | db_name.*}
    FROM user [, user] ...
    

    REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
    

    编辑: 不要忘记刷新权限:

    FLUSH PRIVILEGES;
    

    【讨论】:

      猜你喜欢
      • 2021-01-28
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 2012-11-19
      • 2011-06-08
      • 1970-01-01
      • 2020-05-29
      相关资源
      最近更新 更多