如何使用MySQL DROP USER语句删除用户帐户

时间:2019-11-20 08:52:34  来源:igfitidea点击:

简介:在本教程中,您将学习如何使用MySQL DROP USER语句从数据库中删除一个或多个用户帐户。

MySQL DROP USER语句简介

要从MySQL服务器删除用户帐户,请使用DROP USER语句,如下所示:

DROP USER account_name;

使用这种语法,可以在DROP USER关键字之后指定要删除的用户帐户的名称。

如果要一次删除多个用户帐户,请在DROP USER子句中指定一个逗号分隔的用户帐户列表:

DROP USER account_name [,account_name2]...

如果您删除一个不存在的用户帐户,MySQL将发出错误消息。

在MySQL 5.7.8+中,可以使用IF EXISTS子句仅在存在用户的情况下有条件地删除该用户:

DROP USER [IF EXISTS] account_name [,account_name2]...;

除了删除用户帐户,DROP USER语句还从所有授权表中删除用户的所有特权。

MySQL DROP USER示例

让我们举一些删除用户的示例。

A)使用MySQL DROP USER语句删除用户示例

首先,使用root帐户连接到MySQL Server:

mysql -u root -p

输入root用户的密码,然后按Enter:

Enter password: ********

其次,创建四个帐户用户帐户api @ localhost,远程,dbadmin @ localhost和alice @ localhost:

mysql> create user api@localhost, remote, dbadmin@localhost, alice@localhost identified by 'Secure1Pass!';

第三,显示来自MySQL Server的用户:

mysql> select user, host from mysql.user;

这是当前的用户列表:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| remote           | %         |
| alice            | localhost |
| api              | localhost |
| bob              | localhost |
| dbadmin          | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
9 rows in set (0.00 sec)

第四,使用DROP USER语句删除用户dbadmin @ localhost:

mysql> drop user dbadmin@localhost

第五,再次显示所有用户:

mysql> select user, host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| remote           | %         |
| alice            | localhost |
| api              | localhost |
| bob              | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
8 rows in set (0.00 sec)

用户帐户dbadmin @ localhost已成功删除。

B)使用MySQL DROP USER一次删除多个用户帐户

首先,使用以下语句删除两个用户帐户api @ localhost和remote:

mysql> drop user api@localhost, remote;

其次,显示当前数据库中的用户:

mysql> select user, host from mysql.user;

这是输出:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| alice            | localhost |
| bob              | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)

C)使用MySQL DROP USER删除连接的用户

首先,创建一个名为people的新数据库:

mysql> create database people;

其次,选择人员数据库:

mysql> use people;

第三,在人员数据库中创建一个新的表格人员:

mysql> create table persons(
    ->     id int auto_increment,
    ->     firstName varchar(100) not null,
    ->     lastName varchar(100) not null,
    ->     primary key(id));

第四,将人员数据库上的所有特权授予帐户用户alice:

mysql> grant all privileges on people.* to alice@localhost;

第五,启动另一个会话并使用用户alice @ localhost连接到数据库:

mysql -u alice -p

输入用户帐户alice的密码,然后按Enter键:

Enter password: ************

第六,选择人员数据库:

mysql> use people;

第七,在人员表中插入一行:

mysql> insert into persons(firstname, lastname) values('John','Doe');

假设您要删除用户alice @ localhost。

但是,用户帐户alice @ localhost仍连接到MySQL Server。
如果删除当前连接的用户,则该用户可以正常运行,直到下次登录。
在这种情况下,您应该先通知用户。

如果无法这样做,则可以先删除用户会话,然后再删除用户帐户。

第八,使用根目录会话中的SHOW PROCESSLIST语句查找连接的ID:

+----+-----------------+-----------------+--------+---------+-------+------------------------+------------------+
| Id | User            | Host            | db     | Command | Time  | State                  | Info             |
+----+-----------------+-----------------+--------+---------+-------+------------------------+------------------+
|  4 | event_scheduler | localhost       | NULL   | Daemon  | 31803 | Waiting on empty queue | NULL             |
| 20 | root            | localhost:63851 | NULL   | Query   |     0 | starting               | show processlist |
| 21 | alice           | localhost:64060 | people | Sleep   |    14 |                        | NULL             |
+----+-----------------+-----------------+--------+---------+-------+------------------------+------------------+

如您所见,用户帐户alice @ localhost的连接ID为21。

第九,使用KILL语句终止进程21:

KILL 21;

如果用户帐户alice发出任何查询,则会收到一条错误消息:

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

最后,执行DROP USER语句删除用户帐户alice @ localhost。

DROP USER alice@localhost;

在本教程中,您学习了如何使用MySQL DROP USER语句删除一个或多个用户帐户。