首页 > 编程笔记 > MySQL笔记 阅读:2

MySQL删除用户(DROP USER和DELETE)

MySQL 中,可以使用 DROP USER 语句删除用户,也可以使用 DELETE 语句删除用户。

MySQL DROP USER语句删除用户

使用 DROP USER 语句删除用户时,必须拥有 DROP USER 权限。DROP USER 语句的语法如下所示:
DROP USER user[,user]...;
其中,user 表示需要删除的用户,由用户名(User)和主机名(Host)构成。DROP USER 语句可以同时删除多个用户,各用户之间用逗号分隔。

删除上面创建的 li4 和 zhang3 用户,具体 SQL 语句如下所示:
mysql> DROP USER li4;  # 默认删除Host值为'%'的用户
mysql> DROP USER 'zhang3'@'localhost';  # 删除上面创建的用户

查看用户信息,结果如下所示:
mysql> SELECT Host,User FROM mysql.user;
+-----------+------------------+
| Host      | User             |
+-----------+------------------+
| %         | root             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
+-----------+------------------+
可以看到,已经没有了 li4 和 zhang3 用户信息。

MySQL DELETE语句删除用户

使用 DELETE 语句可以直接将用户信息从 user 表中删除,但必须对 user 表拥有 DELETE 权限。DELETE 语句的语法如下所示:
DELETE FROM mysql.user WHERE Host='hostname' AND User='username';
因为 Host 字段和 User 字段是 user 表的联合主键,所以需要这两个字段的值才能唯一确定一条记录。

执行完 DELETE 语句后,需要执行 FLUSH 语句使删除操作生效,具体 SQL 语句如下所示:
mysql> FLUSH PRIVILEGES;

例如,使用如下 SQL 语句删除用户名为 "wang5" 并且主机名为 "localhost" 的用户信息:
mysql> DELETE FROM mysql.user WHERE Host='localhost' AND User='wang5';
mysql> FLUSH PRIVILEGES;

一般不推荐使用 DELETE 语句删除用户,因为系统会有残留信息。而使用 DROP USER 语句则会删除用户及其对应的权限,执行该语句后会发现 user 表和 db 表中相应的用户信息都消失了。

相关文章