在本教程中,您将学习如何使用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的所有用户信息,请使用以下语句:
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,请使用以下语句:
DROP USER 'api@localhost';
再次从mysql.user表中查询数据,您将看到用户api已被删除。
数据库中的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用户帐户的进程号为:40。
第二,通过杀死这个进程 –
KILL 40;
用户帐户dbadmin收到一条错误消息:
ERROR 2013 (HY000): Lost connection to MySQL server during query
第三,执行DROP USER语句删除用户帐户dbadmin:
DROP USER dbadmin@localhost;
请注意,如果不终止活动会话,则删除的用户(如果连接到数据库服务器)仍然可以执行所有操作,直到会话结束。
在本教程中,您已经学会了如何使用MySQL DROP USER语句来删除一个或多个用户帐户。
¥ 我要打赏 纠错/补充 收藏