MySQL復原許可權(Revote語句)

2019-10-16 22:55:42

在本教學中,您將學習如何使用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使用者對範例資料庫(yiibaidb)具有SELECTUPDATEDELETE許可權。現在,如果要從rfc使用者復原UPDATEDELETE許可權,可以按如下方式執行:

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

-- 檢視使用者的當前許可權
SHOW GRANTS FOR rfc;

-- 授予使用者許可權
GRANT SELECT, UPDATE, DELETE ON `yiibaidb`.* TO 'rfc'@'%';

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

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

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

-- 建立使用者
CREATE USER IF NOT EXISTS rfc IDENTIFIED BY 'newpasswd';

-- 授予使用者許可權
GRANT SELECT, UPDATE, DELETE ON  yiibaidb.* TO rfc;

其次,從rfc使用者復原UPDATEDELETE許可權,參考以下語句:

REVOKE UPDATE, DELETE ON yiibaidb.*  FROM rfc;

第三,可以使用SHOW GRANTS命令再次檢視rfc使用者的許可權。

-- 檢視使用者許可權
SHOW GRANTS FOR 'rfc'@'%';
-- 授予使用者許可權
GRANT SELECT ON `yiibaidb`.* 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使用者的許可權。