在 MySQL 中使用 DROP USER 语句删除用户帐户
本文介绍了在 MySQL 中如何使用 DROP USER
语句从数据库中删除一个或多个用户帐户。
某些特定的场景下,您可能想要删除已有的用户,比如:
- 此用户账户已经不被使用
- 此用户账户已经被泄露
要从 MySQL 服务器中删除用户帐户,请使用 DROP USER
语句。
MySQL DROP USER
语句介绍
以下是 DROP USER
语句的基本语法:
DROP USER [IF EXISTS] account_name [,account_name2]...
在此语法中,您需要在 DROP USER
关键字后指定要删除的用户帐户的名称。
如果要一次删除多个用户帐户,请在 DROP USER
子句中指定以逗号分隔的用户帐户列表。
如果删除不存在的用户帐户,MySQL 将发出错误。您可以使用 IF EXISTS
子句仅在用户存在时有条件地删除用户。 不过 MySQL 5.7.8+ 以上的版本才支持 IF EXISTS
子句。
DROP USER
语句不但删除用户帐户,而且从所有授权表中删除用户的所有权限。
注意:如果删除的用户在删除之前已经登录了一个会话,删除后并不会影响此会话,直到会话结束。
MySQL DROP USER
实例
让我们看一个删除用户的例子。
-
使用
root
帐户连接到 MySQL 服务器:mysql -u root -p
输入
root
用户的密码,然后按Enter
:Enter password: ********
-
显示当前 MySQL 服务器的所有用户:
SELECT user, host FROM mysql.user;
这是当前的用户列表:
+------------------+-----------+ | user | host | +------------------+-----------+ | root | % | | sqliz | % | | test_role1 | % | | test_role2 | % | | testuser | % | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | | sqliz | localhost | +------------------+-----------+
-
使用以下
DROP USER
语句删除用户sqliz@localhost
:DROP USER sqliz@localhost;
-
再次显示所有用户:
SELECT user, host FROM mysql.user;
+------------------+-----------+ | user | host | +------------------+-----------+ | root | % | | sqliz | % | | test_role1 | % | | test_role2 | % | | testuser | % | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+
用户帐户
sqliz@localhost
已成功删除。
杀掉已删除用户的会话
如果删除的用户在删除之前已经登录了一个会话,删除后并不会影响此会话,直到会话结束。这也会会带来危险。
你可以使用以下 SHOW PROCESSLIST
语句查看会话列表,并使用 KILL
语句结束已删除的用户的会话。
SHOW PROCESSLIST
这里是当前服务器的会话列表:
+----+-----------------+---------------------+---------+---------+---------+------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+---------------------+---------+---------+---------+------------------------+------------------+
| 5 | event_scheduler | localhost | NULL | Daemon | 4061212 | Waiting on empty queue | NULL |
| 24 | root | 192.168.0.204:54684 | NULL | Query | 0 | starting | SHOW PROCESSLIST |
| 26 | sqliz | localhost:54688 | sqlizdb | Sleep | 1965 | | NULL |
+----+-----------------+---------------------+---------+---------+---------+------------------------+------------------+
如您所见,用户帐户 sqliz@localhost
会话的 ID 是 26
。
您可以使用使用 KILL
语句终止会话 26
:
KILL 26;
结论
在本文中,您学习了如何使用 MySQL DROP USER
语句从 MySQL 数据库服务器中删除一个或多个用户账户。