文档首页/ 云数据库 GaussDB(for MySQL)/ 故障排除/ SQL类/ MySQL创建用户提示服务器错误(ERROR 1396)
更新时间:2024-09-05 GMT+08:00

MySQL创建用户提示服务器错误(ERROR 1396)

场景描述

用户账号在控制台界面上消失,创建不了同名账号,但使用账号名和旧密码还能连接。

创建用户失败的报错信息:

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),原因是内存中相关数据仍然存在。

正确删除用户的方式为drop user语句,注意以下几点:

  • drop user语句可用于删除一个或多个用户,并撤销其权限。
  • 使用drop user语句必须拥有MySQL数据库的DELETE权限或全局CREATE USER权限。
  • drop user语句的使用中,若没有明确地给出账户的主机名,则该主机名默认为“%”。

故障场景恢复示例:

创建用户后用delete删除用户,再创建同名用户时报错ERROR 1396。通过执行flush privileges后,可正常创建同名用户。

解决方案

  • 方式一(推荐):在业务低峰期,使用管理员账户执行drop user user_name删除用户,再重新创建该用户,修复该问题。
  • 方式二:在业务低峰期,使用管理员账户执行flush privileges后,再重新创建该用户,修复该问题。建议开启数据库全量sql洞察功能,便于分析是哪个客户端删除了用户。