
# MySQL创建用户提示服务器错误
#### 场景描述
用户账号在控制台界面上消失，创建不了同名账号，但使用账号名和旧密码还能连接。
创建用户失败的报错信息：
```
ERROR 1396 (HY000): Operation CREATE USER failed for xxx
```
#### 原因分析
1. 查询确认，发现消失的账号在mysql.user表中已经被删除，因此在控制台不再显示。
2. 使用账号名和旧密码还能连接登录，说明使用的是**delete from mysql.user** 方式删除用户。使用这种方式删除用户，需要执行**flush privileges**后，才会清理内存中相关数据，该用户才彻底不能登录。
3. 使用**delete from mysql.user** 方式删除用户，无法重新创建相应账户（报错ERROR 1396），原因是内存中相关数据仍然存在。
   ![](https://support.huaweicloud.com/trouble-rds-mysql/zh-cn_image_0000002212062820.png "点击放大")
   
正确删除用户的方式为**drop user**语句，注意以下几点：
- **drop user**语句可用于删除一个或多个用户，并撤销其权限。
- 使用**drop user**语句必须拥有MySQL数据库的DELETE权限或全局CREATE USER权限。
- 在**drop user**语句的使用中，若没有明确地给出账户的主机名，则该主机名默认为"%"。
故障场景恢复示例：
创建用户后用**delete** 删除用户，再创建同名用户时报错ERROR 1396。通过执行**flush privileges**后，可正常创建同名用户。
![](https://support.huaweicloud.com/trouble-rds-mysql/zh-cn_image_0000002247142597.png "点击放大")
#### 解决方案
- 方式一（推荐）：在业务低峰期，使用管理员账户执行**drop user user_name**删除用户，再重新创建该用户，修复该问题。
- 方式二：在业务低峰期，使用管理员账户执行**flush privileges**后，再重新创建该用户，修复该问题。建议开启数据库SQL审计日志，便于分析是哪个客户端删除了用户。
 
