如何使用MySQL DROP USER语句删除用户帐户
简介:在本教程中,您将学习如何使用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语句删除一个或多个用户帐户。