MySQL刪除使用者( DROP USER)

2019-10-16 22:55:45

在本教學中,您將學習如何使用MySQL DROP USER語句來刪除使用者帳戶。

MySQL DROP USER語句介紹

要刪除一個或多個使用者帳戶,請按如下所示使用DROP USER語句:

DROP USER user, [user],...;

要刪除使用者,可以在DROP USER子句之後的'user_name'@'host_name'格式中指定帳戶名稱。如果要一次刪除多個使用者,請使用以逗號分隔的使用者列表。

如果刪除不存在的使用者帳戶,MySQL將發出錯誤。 從MySQL 5.7.8開始,可以使用IF EXISTS子句來指示該語句在刪除不存在的使用者帳戶時發出警告,而不是發出錯誤。

DROP USER [IF EXISTS] user, [user],...;

除了刪除使用者帳戶之外,DROP USER語句還會從所有授權表中刪除所有許可權。

刪除使用者帳戶範例

要檢視MySQL伺服器中的資料庫:mysql的所有使用者資訊,請使用以下SELECT語句:

USE mysql;
SELECT user, host FROM mysql.user;

下面是我在編寫本教學時所使用MySQL資料庫中的使用者帳號列表:

mysql> SELECT user, host FROM mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| api@localhost | %         |
| remote_user   | %         |
| rfc           | %         |
| superadmin    | %         |
| auditor       | localhost |
| dbadmin       | localhost |
| mysql.sys     | localhost |
| root          | localhost |
| super         | localhost |
+---------------+-----------+
9 rows in set

假設您要刪除使用者帳戶:api@localhost,請使用以下語句:

DROP USER 'api@localhost';

再次從mysql.user表中查詢資料,您將看到使用者api@localhost已被刪除。

資料庫中的mysql.user表的使用者帳號列表如下所示:

mysql> SELECT user, host FROM mysql.user;
+-------------+-----------+
| user        | host      |
+-------------+-----------+
| remote_user | %         |
| rfc         | %         |
| superadmin  | %         |
| auditor     | localhost |
| dbadmin     | localhost |
| mysql.sys   | localhost |
| root        | localhost |
| super       | localhost |
+-------------+-----------+
8 rows in set

要刪除單個DROP USER語句中兩個使用者:remote_userauditor的帳戶,請使用以下語句:

DROP USER remote_user, auditor;

下面可驗證刪除操作的結果,再次查詢mysql.user表中的使用者資訊 -

SELECT user, host FROM mysql.user;

假設使用者帳戶已登入,並且正在執行對談。 如果您刪除使用者帳戶,則不會停止開啟的對談。 活動對談將繼續,直到使用者退出。通常,在這種情況下,您應該在執行DROP USER語句之前立即關閉使用者的對談。

首先,需要使用SHOW PROCESSLIST語句識別使用者的進程標識。

如您所見,dbadmin@localhost使用者帳戶的進程號為:40

第二,通過殺死這個進程 -

KILL 40;

使用者帳戶dbadmin@localhost收到一條錯誤訊息:

ERROR 2013 (HY000): Lost connection to MySQL server during query

第三,執行DROP USER語句刪除使用者帳戶dbadmin@localhost

DROP USER dbadmin@localhost;

請注意,如果不終止活動對談,則刪除的使用者(如果連線到資料庫伺服器)仍然可以執行所有操作,直到對談結束。

在本教學中,您已經學會了如何使用MySQL DROP USER語句來刪除一個或多個使用者帳戶。