在本教學中,您將學習如何使用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_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 dbadmin@localhost;
請注意,如果不終止活動會話,則刪除的用戶(如果連接到資料庫伺服器)仍然可以執行所有操作,直到會話結束。
在本教學中,您已經學會了如何使用MySQL DROP USER
語句來刪除一個或多個用戶帳戶。