MySQL——数据库的高级操作(二)用户管理(3)删除普通用户
在 MySQL中,通常会创建多个普通用户来管理数据库,但如果发现某些用户是没有必要的,就可以将其删除,删除用户有两种方式,接下来将针对这两种方式进行详细的讲解。
1、使用 DROP USER 语句删除用户
DROP USER 语句与 DROP DATABASE 语句有些类似,如果要删除某个用户,只需在 DROP USER 后面指定要删除的用户信息即可。DROP USER 语句删除用户的语法格式如下:
DROP USER 'username'@'hostname'[,'username'@'hostname'];
上述语法格式中,username表示要删除的用户,hostname表示主机名,DROP USER语句可以同时删除一个或多个用户,多个用户之间用逗号隔开。值得注意的是,使用DROP USER 语句来删除用户时,必须拥有 DROP USER 的权限。使用 DROP USER 语句删除用户 userl,SQL 语句如下:
DROP USER 'user1'@'localhost';
上述语句执行成功后,可以通过SELECT语句验证用户是否被删除,运行结果如下:
mysql> SELECT Host, User, authentication_string FROM mysql.user;
+-----------+------------------+------------------------------------------------------------------------+
| Host | User | authentication_string |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root | *A3687CD1574820D919D6DF2AC07CA3AA9E5438BE |
| localhost | user2 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| localhost | user3 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+-----------+------------------+------------------------------------------------------------------------+
6 rows in set (0.00 sec)
从运行结果可以看出,user 表中已经没有 user1用户了,因此说明该用户被成功删除了。
2、使用 DELETE 语句删除用户
DELETE语句不仅可以删除普通表中的数据,还可以删除 user 表中的数据,使用该语句删除 user 表中的数据时,只需指定表名为 mysql.user,以及要删除的用户信息即可。同样地,在使用 DELETE 语句时必须拥有对 mysql.user 表的 DELETE 权限。
DELETE 语句删除用户的语法格式如下:
DELETE FROM mysgl.user WHERE Host='hostname' AND User='username';
上述语法格式中,mysql.user 参数指定要操作的表,WHERE 指定条件语句,Host 和 User 都是 mysql. user 表的字段,这两个字段可以确定唯一的一条记录。使用 DELETE 语句删除用户 user2,SQL 语句如下:
DELETE FROM mysql.user WHERE Host='localhost' AND User='user2';
上述语句执行成功后,可以通过 SELECT语句查询用户是否被删除,查询结果如下:
mysql> SELECT Host, User, authentication_string FROM mysql.user;
+-----------+------------------+------------------------------------------------------------------------+
| Host | User | authentication_string |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root | *A3687CD1574820D919D6DF2AC07CA3AA9E5438BE |
| localhost | user3 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+-----------+------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)
从运行结果可以看出,user 表中已经没有 user2 用户了,因此说明该用户被成功删除了。由于直接对 user表进行操作,执行完命令后需要使用“ FLUSH PRIVILEGES; ”语句重新加载用户权限。