当我为用户授予某些特定表的特权时:
GRANT ALL PRIVILEGES ON table1.* TO 'user1'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON table2.* TO 'user1'@'localhost' IDENTIFIED BY 'password';
我如何撤销仅此用户的特权table1?
table1
Google是您的朋友! http://dev.mysql.com/doc/refman/5.7/en/revoke.html
句法:
REVOKE ALL PRIVILEGES ON table1.* FROM 'user1'@'localhost';
为了进一步解释这个答案-我将教如何钓鱼(而不是只给你一条鱼)。
首先,MySQL文档可能看起来令人困惑-“语法”REVOKE如下所示:
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种“方式”来称呼它:
REVOKE priv_type ...
REVOKE ALL PRIVILEGES, GRANT ...
REVOKE PROXY ON ...
这三个用MySQL文档页面中的空白行分隔。
对于每个选项,都有“可选”参数/设置/值。这些用方括号表示,例如:
REVOKE priv_type [(column_list)] ...
该(column_list)是可选的。你可以提供,但你不要 有 来。
(column_list)
( 更新的注释,2019年12月:
这priv_type正是让我们知道我们可以指定的内容ALL PRIVILEGES;因为上面链接的文档中告诉我们:
priv_type
ALL PRIVILEGES
有关特权级别,允许的priv_type,priv_level和object_type values以及用于指定用户和密码的语法的详细信息,请参见第13.7.1.4节``GRANT语句’‘。
priv_level
object_type values
``GRANT
第13.7.1.4节指出:
MySQL支持的特权 下表总结了可以为GRANTandREVOKE语句指定的允许的priv_type特权类型,以及可以授予每个特权的级别。 ALL [PRIVILEGES] 授予指定访问权限的所有特权
MySQL支持的特权
下表总结了可以为GRANTandREVOKE语句指定的允许的priv_type特权类型,以及可以授予每个特权的级别。
GRANT
ALL [PRIVILEGES]
结束更新。 )
同样,您可以将它们链接在一起-它们缩进了下一行以表明这一点(并用来...表明您可以继续重复):
...
priv_type [(column_list)] [, priv_type [(column_list)]] ... <-- indented, and note the "..."
MySQL文档中存在更复杂的示例-就像CREATE TABLE您有可选标志的列表一样:
CREATE TABLE
[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
这{x|y|z}句法表示您 必须 指定其中之一({...}非可选的[...]手段里面的东西是可选的- 因此,如果指定COLUMN_FORMAT,在以下三个标志之一 所需 ),管道(|)表示只能指定 一个 的列表(FIXED/DYNAMIC/ DEFAULT)。
{x|y|z}
{...}
[...]
COLUMN_FORMAT
|
FIXED
DYNAMIC
DEFAULT
最后一件要说的事-非常了解MySQL文档 版本 。它在网站上的多个地方都有说明-我个人只是看一下URL:
http://dev.mysql.com/doc/refman/5.7/en/create-table.html
请注意它说5.7。这意味着您正在阅读的文档 可能 不适用于除MySQL 5.7以外的任何版本。这让我很痛苦……很多时候,当我在枪口之下试图解决某些紧急情况时,我总是感到痛苦。始终仔细检查它。
5.7