[英]How to revoke MySQL user privileges for one table?
當我向用戶授予某些特定表的權限時:
GRANT ALL PRIVILEGES ON table1.* TO 'user1'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON table2.* TO 'user1'@'localhost' IDENTIFIED BY 'password';
我如何撤銷此用戶的權限,僅適用於table1
?
谷歌是你的朋友! 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)
是可選的。 你可以提供它,但你沒有必要。
(更新說明,2019 年 12 月:
priv_type
是特別讓我們知道我們可以指定ALL PRIVILEGES
; 因為我們在上面鏈接的文檔中被告知:
有關權限存在的級別、允許的
priv_type
、priv_level
和object_type values
以及指定用戶和密碼的語法的詳細信息,請參閱第 13.7.1.4 節,“GRANT
語句”。
第 13.7.1.4 節說明了這一點:
MySQL 支持的權限
下表總結了可以為
GRANT
和REVOKE
語句指定的允許的 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
,則是三個中的一個下面的標志是必需的),管道( |
)表示只能指定列表(一個FIXED
/ DYNAMIC
/ DEFAULT
)。
最后要說的一件事 - 非常了解 MySQL 文檔版本。 它在網站上的幾個地方都有說明 - 我個人只是看一下 URL:
http://dev.mysql.com/doc/refman/5.7/en/create-table.html
請注意,里面寫着5.7
。 這意味着您正在閱讀的文檔可能不適用於 MySQL 5.7 以外的任何版本。 這讓我咬了很多次......通常是當我在恐慌中試圖修復某些東西時! 總是仔細檢查它。
這是誤導。 該語句是撤銷一個架構中的權限,而不是一個表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.