如何撤销一个表的MySQL用户特权?

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

当我为某些特定表授予用户特权时:

GRANT ALL PRIVILEGES ON table1.* TO 'user1'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON table2.* TO 'user1'@'localhost' IDENTIFIED BY 'password';

我如何仅为此table1撤消该用户的特权?

mysql sql privileges
1个回答
10
投票

Google是您的朋友!http://dev.mysql.com/doc/refman/5.7/en/revoke.html

语法:

REVOKE ALL PRIVILEGES ON table1.* FROM 'user1'@'localhost';

为了进一步解释这个答案-我将教如何钓鱼(而不是只给你一条鱼)。

MySQL文档起初看起来会令人困惑-REVOKE的“语法”看起来像这样:

REVOKE
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    FROM user [, user] ...

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

REVOKE PROXY ON user
    FROM user [, user] ...

这意味着有3种“方式”来称呼它:

  1. REVOKE priv_type ...
  2. REVOKE ALL PRIVILEGES, GRANT ...
  3. REVOKE PROXY ON ...

这三个在MySQL文档页面中由空行​​分隔。

对于每个选项,都有“可选”参数/设置/值。这些用方括号表示,例如:

REVOKE priv_type [(column_list)] ...

(column_list)是可选的。您可以提供它,但不能have来提供。

更新说明,2019年12月:

priv_type是专门让我们知道可以指定ALL PRIVILEGES的内容;因为我们在上面链接的文档中被告知:

有关特权级别,允许的priv_typepriv_levelobject_type values的详细信息,以及用于指定用户和密码的语法,请参见第13.7.1.4节“ GRANT语句”。] >

[第13.7.1.4节指出:

MySQL支持的特权

[下表总结了可以为GRANTREVOKE语句指定的允许的priv_type特权类型,以及可以授予每个特权的级别。

  • [ALL [PRIVILEGES]授予指定访问权限的所有特权

结束更新。

类似地,您可以将它们链接在一起-它们缩进了下一行以表明这一点(并使用...表示您可以继续重复):

priv_type [(column_list)]
  [, priv_type [(column_list)]] ...    <-- indented, and note the "..."

MySQL文档中存在更复杂的示例-对于CREATE TABLE,您具有可选标志的列表:

[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]

{x|y|z}语法表示您必须

指定其中之一({...}是非可选的,[...]表示内部的所有内容都是可选的-因此,如果您指定COLUMN_FORMAT,则为三个之一以下标志是required,则管道(|)表示只能指定列表的[[one(FIXED /DYNAMIC/ DEFAULT)。
最后要说的-非常了解MySQL文档

version

。它在网站上的多个地方都有说明-我个人只是看URL:http://dev.mysql.com/doc/refman/5.7/en/create-table.html
请注意其中说5.7。这意味着您正在阅读的文档

可能

不适用于除MySQL 5.7以外的任何版本。这让我很伤脑筋……通常当我在枪口下试图解决某些紧急情况时!始终仔细检查它。
© www.soinside.com 2019 - 2024. All rights reserved.