轻松上手,快乐学习!

MySQL 教程

MySQL 首页MySQL 介绍MySQL 安装MySQL 实例库下载MySQL 实例库导入MySQL SELECTMySQL DISTINCTMySQL ORDER BYMySQL WHEREMySQL ANDMySQL ORMySQL INMySQL BETWEENMySQL LIKEMySQL LIMITMySQL IS NULLMySQL 别名MySQL JOINSMySQL INNER JOINMySQL LEFT JOINMySQL RIGHT JOINMySQL CROSS JOINMySQL SELF JOINMySQL GROUP BYMySQL HAVINGMySQL ROLLUPMySQL 子查询MySQL 派生表MySQL EXISTSMySQL CTEMySQL 递归 CTEMySQL UNIONMySQL INTERSECTMySQL MINUSMySQL INSERTMySQL INSERT INTO SELECTMySQL INSERT IGNOREMySQL UPDATEMySQL UPDATE JOINMySQL DELETEMySQL ON DELETE CASCADEMySQL DELETE JOINMySQL REPLACEMySQL PREPAREMySQL 事务MySQL 表锁定MySQL USEMySQL 数据库管理MySQL CREATE DATABASEMySQL DROP DATABASEMySQL 存储引擎MySQL CREATE TABLEMySQL 序列MySQL ALTER TABLEMySQL RENAME TABLEMySQL DROP COLUMNMySQL ADD COLUMNMySQL DROP TABLEMySQL 临时表MySQL TRUNCATE TABLEMySQL 数据类型MySQL NOT NULLMySQL Primary KeyMySQL Foreign KeyMySQL UNIQUEMySQL CHECKMySQL 字符集MySQL 排序规则MySQL 导入 CSVMySQL 导出 CSVMySQL 自然排序MySQL 基础

MySQL 存储过程

MySQL 存储过程介绍MySQL 存储过程实例MySQL 存储过程变量MySQL 存储过程参数MySQL 存储过程返回多值MySQL IF 语句MySQL CASE 语句MySQL IF CASE 选择MySQL 存储过程循环MySQL 存储过程游标MySQL 存储过程列表MySQL 存储过程异常处理MySQL SIGNAL 和 RESIGNALMySQL 存储函数

MySQL 视图

MySQL 视图教程SQL 视图介绍MySQL 视图介绍MySQL 创建视图MySQL 可更新视图WITH CHECK OPTIONLOCAL&CASCADEDMySQL 视图管理

MySQL 触发器

MySQL 触发器SQL 触发器MySQL 触发器介绍MySQL 触发器的创建MySQL 创建多个触发器MySQL 触发器管理MySQL 计划事件MySQL事件修改

MySQL 索引

MySQL 索引MySQL 索引创建MySQL 索引删除MySQL 显示索引MySQL 唯一索引MySQL 前缀索引MySQL 隐形索引MySQL 降序索引MySQL 复合索引MySQL 聚集索引MySQL 索引基数MySQL USE INDEXMySQL 强制索引

MySQL 管理

MySQL 管理MySQL访问控制系统MySQL 用户创建MySQL 用户密码MySQL 权限授予MySQL 权限撤销MySQL 角色MySQL 删除用户MySQL 表维护mysqldump 备份工具MySQL 数据库列表MySQL 表列表MySQL 表字段列表MySQL 用户列表MySQL 进程列表MySQL 列生成比较MySQL中同一表中的连续行

MySQL 全文搜索

MySQL 全文搜索MySQL 全文搜索介绍FULLTEXT索引MySQL 自然语言全文搜索MySQL 布尔全文搜索MySQL查询扩展MySQL ngram

MySQL 高级

MySQL 函数MySQL 窗口函数

MySQL 技巧

MySQL 查找重复数据MySQL 删除重复数据MySQL UUIDMySQL 表的复制MySQL 复制库MySQL 变量MySQL SELECT INTO 变量MySQL 表的存储引擎MySQL 使用正则查询MySQL 添加序号MySQL 随机查询MySQL 查询第 N 高记录MySQL 重置自增值MySQL VS MariaDBMySQL 间隔值MySQL 获取当天日期MySQL NULL 映射MySQL 注释理解MySQL EXPLAINMySQL 技巧介绍MySQL COUNTMySQL 数据分层MySQL 两表比较Mysql Like 优化

MySQL 窗口函数

MySQL CUME_DIST() 函数MySQL DENSE_RANK() 函数MySQL FIRST_VALUE 函数MySQL LAG() 函数MySQL LAST_VALUE() 函数MySQL LEAD 函数MySQL NTH_VALUE 函数MySQL NTILE 函数MySQL PERCENT_RANK 函数MySQL RANK 函数MySQL ROW_NUMBER 函数

MySQL 应用

MySQL应用程序编程接口PHP MySQL教程PHP 数据库连接

MySQL 优化

mysqld 内存持续变高


MySQL 删除用户


简介:在本教程中,您将学习如何使用MySQL DROP USER语句删除用户帐户。


MySQL DROP USER语句简介

要删除一个或多个用户帐户,请使用以下DROP USER语句:

DROP USER user, [user],...;

要删除用户,请在DROP USER子句后面的格式中指定帐户名称'user_name'@'host_name'。如果要一次删除多个用户,请使用逗号分隔用户列表。

如果删除不存在的用户帐户,MySQL将发出错误。从MySQL 5.7.8开始,您可以使用IF EXISTS子句指示语句为每个不存在的用户帐户发出警告,而不是发出错误。

DROP USER [IF EXISTS] user, [user],...;

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


删除用户帐户示例

要查看MySQL数据库服务器中的所有用户,请使用以下SELECT语句:

SELECT user, host FROM mysql.user;

这是我们的数据库服务器中的用户帐户列表:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| api@localhost    | %         |
| crm_dev          | %         |
| crm_read         | %         |
| crm_write        | %         |
| remote           | %         |
| rfc              | %         |
| root             | %         |
| superadmin       | %         |
| auditor          | localhost |
| crm_dev1         | localhost |
| crm_read1        | localhost |
| crm_write1       | localhost |
| crm_write2       | localhost |
| dbadmin          | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| super            | localhost |
+------------------+-----------+
18 rows in set (0.07 sec)

假设您要删除用户帐户dbadmin@localhost,请使用以下语句:

DROP USER dbadmin@localhost;

mysql.user再次从表中查询数据,您将看到dbadmin@localhost已删除的数据。

SELECT user, host FROM mysql.user;

用户帐户dbadmin@localhost已被删除,如以下结果集所示:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| api@localhost    | %         |
| crm_dev          | %         |
| crm_read         | %         |
| crm_write        | %         |
| remote           | %         |
| rfc              | %         |
| root             | %         |
| superadmin       | %         |
| auditor          | localhost |
| crm_dev1         | localhost |
| crm_read1        | localhost |
| crm_write1       | localhost |
| crm_write2       | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| super            | localhost |
+------------------+-----------+
17 rows in set (0.06 sec)

要在单个语句中删除用户'api@localhost'@%remote用户帐户DROP USER,请使用以下语句:

DROP USER 'api@localhost', remote;

让我们验证删除操作。

SELECT user, host FROM mysql.user;

我们还剩下四个帐户,这两个帐户已被删除。

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| crm_dev          | %         |
| crm_read         | %         |
| crm_write        | %         |
| rfc              | %         |
| root             | %         |
| superadmin       | %         |
| auditor          | localhost |
| crm_dev1         | localhost |
| crm_read1        | localhost |
| crm_write1       | localhost |
| crm_write2       | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| super            | localhost |
+------------------+-----------+
15 rows in set (0.01 sec)

假设用户帐户已登录并且活动会话正在运行。如果删除用户帐户,则不会停止打开的会话。活动会话将继续,直到用户退出。通常,在这种情况下,您应在执行DROP USER语句之前立即关闭用户的会话。

首先,您需要使用SHOW PROCESSLIST语句来标识用户的进程ID 。

mysql> show processlist;
+----+-----------------+----------------------+-------+---------+---------+------------------------+------------------+
| Id | User            | Host                 | db    | Command | Time    | State                  | Info             |
+----+-----------------+----------------------+-------+---------+---------+------------------------+------------------+
| 66 | root            | localhost:55402      | mysql | Query   |       0 | starting               | show processlist |
| 78 | dbadmin         | localhost:63139      | NULL  | Sleep   |     115 |                        | NULL             |
+----+-----------------+----------------------+-------+---------+---------+------------------------+------------------+
9 rows in set (0.01 sec)

如您所见,dbadmin@localhost用户帐户具有进程ID 78

其次,你通过使用来杀死这个过程

KILL 78;

用户帐户dbadmin@localhost收到错误消息:

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

第三,执行DROP USER语句删除用户帐户dbadmin@localhost

DROP USER dbadmin@localhost;

请务必注意,如果不终止活动会话,则删除的用户(如果已连接到数据库服务器)仍可执行所有操作,直到会话结束。

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