MySQL撤銷許可權(Revote語句)

在本教學中,您將學習如何使用MySQL中的REVOKE語句從MySQL帳戶中撤銷許可權。

我們強烈建議您遵循以下教學,以更好地瞭解MySQL REVOKE語句的工作原理:

MySQL REVOKE語句簡介

要從用戶帳戶撤銷許可權,您可以使用MySQL REVOKE語句。MySQL允許您從用戶撤銷一個或多個特權或所有權限。

以下說明從用戶撤銷指定許可權的語法:

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

我們來詳細看看MySQL REVOKE語句使用 -

  • 首先,在REVOKE關鍵字之後指定要從用戶撤銷的許可權列表,需要用逗號分隔許可權。
  • 其次,在ON子句中指定要撤銷許可權的許可權級別。
  • 第三,在FROM子句中指定要撤銷的許可權的用戶帳戶

請注意,要從用戶帳戶撤銷許可權,您必須具有GRANT OPTION許可權和要撤銷的許可權。

要撤銷用戶的所有權限,請使用以下REVOKE語句:

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

要執行REVOKE ALL語句,必須具有全局CREATE USER許可權或mysql資料庫的UPDATE許可權。

要撤銷代理用戶,請使用REVOKE PROXY命令,如下所示:

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

代理用戶是MySQL中有效的用戶,可以模擬(假冒)另一個用戶,因此代理用戶擁有其模擬的用戶的所有權限。

在撤銷用戶許可權之前,最好通過使用SHOW GRANTS語句來檢查用戶擁有的許可權的情況,如下所示:

SHOW GRANTS FOR user;

MySQL REVOKE示例

假設rfc用戶對示例資料庫(zaixiandb)具有SELECTUPDATEDELETE許可權。現在,如果要從rfc用戶撤銷UPDATEDELETE許可權,可以按如下方式執行:

首先,使用SHOW GRANTS語句檢查用戶的許可權:

-- 查看用戶的當前許可權
SHOW GRANTS FOR rfc;

-- 授予用戶許可權

GRANT SELECT, UPDATE, DELETE ON `zaixiandb`.* TO 'rfc'@'%';

執行上面查詢語句,得到以下結果 -

+-----------------------------------------------------------+
| Grants for rfc@%                                          |
+-----------------------------------------------------------+
| GRANT USAGE ON *.* TO 'rfc'@'%'                           |
| GRANT SELECT, UPDATE, DELETE ON `zaixiandb`.* TO 'rfc'@'%' |
+-----------------------------------------------------------+

請注意,確實按照授予用戶許可權的教學文章學習並操作後,您可以創建rfc帳戶並向其授予SELECTUPDATEDELETE特權,如下所示:

-- 創建用戶
CREATE USER IF NOT EXISTS rfc IDENTIFIED BY 'newpasswd';

-- 授予用戶許可權

GRANT SELECT, UPDATE, DELETE ON  zaixiandb.* TO rfc;

其次,從rfc用戶撤銷UPDATEDELETE許可權,參考以下語句:

REVOKE UPDATE, DELETE ON zaixiandb.*  FROM rfc;

第三,可以使用SHOW GRANTS命令再次查看rfc用戶的許可權。

-- 查看用戶許可權

SHOW GRANTS FOR 'rfc'@'%';
-- 授予用戶許可權

GRANT SELECT ON `zaixiandb`.* TO 'rfc'@'%';

如果要撤銷rfc用戶的所有權限,請執行以下命令:

REVOKE ALL PRIVILEGES, GRANT OPTION FROM rfc;

如果再次查看rfc用戶的許可權,您將看到rfc用戶已經沒有了許可權。

-- 查看用戶許可權

SHOW GRANTS FOR rfc;

GRANT USAGE ON *.* TO 'rfc'@'%';

請注意,使用USAGE許可權意味著MySQL中沒有特權。

當MySQL REVOKE命令生效時

MySQL REVOKE語句的生效時間取決於許可權級別,如下所示:

  • 客戶端在後續會話中連接到MySQL時,對全局許可權所做的更改才會生效。這些更改不適用於所有當前連接的用戶。
  • 資料庫許可權的更改將在下一個USE語句之後生效。
  • 表和列許可權的更改將在進行更改之後發出的所有查詢時生效。

在本教學中,您學習了如何使用MySQL REVOKE語句來撤銷MySQL用戶的許可權。


上一篇: MySQL管理 下一篇: MySQL全文搜索