在本教學中,您將學習如何使用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 |
+---------------+-----------+
| [email protected] | % |
| remote_user | % |
| rfc | % |
| superadmin | % |
| auditor | localhost |
| dbadmin | localhost |
| mysql.sys | localhost |
| root | localhost |
| super | localhost |
+---------------+-----------+
9 rows in set
假設您要刪除使用者帳戶:api@localhost
,請使用以下語句:
DROP USER '[email protected]';
再次從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_user
和auditor
的帳戶,請使用以下語句:
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 [email protected];
請注意,如果不終止活動對談,則刪除的使用者(如果連線到資料庫伺服器)仍然可以執行所有操作,直到對談結束。
在本教學中,您已經學會了如何使用MySQL DROP USER
語句來刪除一個或多個使用者帳戶。