账号的删除与改名
DROP USER 删除账号并连带清理它在各库上的授权记录,RENAME USER 只改账号名与来源主机、保留原有密码与权限。离职交接、系统下线、临时账号回收都应走这两条命令,否则权限记录会长期残留形成看不见的入口。要注意删除账号不会断开已经建立的连接,会话仍可用到自然结束。
基本信息
| 适用 | MySQL 5.7 / 8.0 |
|---|---|
| 删除账号 | DROP USER 'u'@'host'; 支持 IF EXISTS |
| 改名 | RENAME USER 'old'@'host' TO 'new'@'host'; |
| 巡检 | SELECT user, host FROM mysql.user; |
| 前提 | 需要 CREATE USER 权限或等效动态权限 |
操作示例
操作示例
RENAME USER 'app'@'10.0.%' TO 'order-app'@'10.0.%'; # 改名并保留权限
DROP USER 'old-app'@'%'; # 删除账号与其授权
DROP USER IF EXISTS 'ghost'@'localhost'; # 幂等删除,不存在也不报错
SELECT user, host, account_locked, password_expired FROM mysql.user ORDER BY user; # 巡检遗留账号
SELECT user, host, command, time, state FROM information_schema.processlist ORDER BY time DESC; # 找出已删除账号的在用连接
KILL <连接ID>; # 彻底下线,避免会话继续持有权限操作与影响
| 操作 | 影响 | 注意 |
|---|---|---|
| DROP USER | 删除账号与全部授权 | 不可回滚,重建是全新账号 |
| DROP USER IF EXISTS | 不存在时静默跳过 | 脚本里更安全,避免中断 |
| RENAME USER | 改账号名与来源主机 | 保留密码与权限,需同步改配置文件 |
| 已建立的会话 | 不受影响,仍可继续执行 | 需要 KILL 连接才真正下线 |
| mysql.user 巡检 | 发现长期未用或多余账号 | 结合业务清单定期核对 |
典型使用场景
- 离职交接后回收账号并按新负责人重建
- 系统下线时清理对应账号,防止权利残留
- 账号命名规范调整,用改名保留既有授权
- 安全审计整改:清理来源为 % 或长期未登录的账号
- 应急响应:发现凭据泄漏时立即删除账号并重建
删除账号不会自动断开已有连接:完成删除后如担心继续被使用,应查出对应连接并 KILL,才能真正让权限失效。
删除前确认没有应用、定时任务或监控在用该账号,半夜批量报连接失败往往就是漏了这一步。