所有特权除了MySQL中的一个表

时间:2014-06-13 11:42:40

标签: mysql privileges

我想向用户授予所有权限。

为此我做:

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

现在,我想从用户carl撤消指定表的权限。我现在是否要撤销所有特权并分别授予每个表格,还是有其他方式授予所有特权并撤销特殊权限?

感谢您的帮助。

托马斯

2 个答案:

答案 0 :(得分:0)

撤销,请使用:

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;

答案 1 :(得分:0)

  

还是有另一种方式来授予ALL PRIVILEGES并REVOKE特殊   一个?

不,没有任何捷径可以做到这一点。您必须从用户撤消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