在本教學中,您將學習如何使用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)具有SELECT,UPDATE和DELETE許可權。現在,如果要從rfc
用戶撤銷UPDATE
和DELETE
許可權,可以按如下方式執行:
首先,使用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
帳戶並向其授予SELECT
,UPDATE
和DELETE
特權,如下所示:
-- 創建用戶
CREATE USER IF NOT EXISTS rfc IDENTIFIED BY 'newpasswd';
-- 授予用戶許可權
GRANT SELECT, UPDATE, DELETE ON zaixiandb.* TO rfc;
其次,從rfc
用戶撤銷UPDATE
和DELETE
許可權,參考以下語句:
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用戶的許可權。