错误1396(HY000):操作CREATE USER因“用户名”@“localhost”IDENTIFIED BY'mypassword'失败;

时间:2013-06-09 10:20:05

标签: mysql

我错误地从我的mysql.user表中删除了我的root用户。

delete from mysql.user where user='username';

要创建相同的root用户,我试图触发查询以下,

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

我收到错误

ERROR 1396 (HY000): Operation CREATE USER failed for 'username'@'localhost'

根据this SO answer,我尝试FLUSH PRIVILEGES;,但我仍然遇到同样的错误。

知道出了什么问题吗?


答案

我还必须从mysql.db

中删除相同的内容
delete from mysql.db where user='username';

就是这样......

3 个答案:

答案 0 :(得分:12)

如果使用DROP USER命令删除用户,则用户将被完全删除。如果以后必须添加具有相同用户名的用户,则可以使用FLUSH PRIVILEGES命令从mysql内存中完全删除权限。

DROP USER username@hostname;

在创建同一用户之前,您必须restart mysql或运行FLUSH PRIVILEGES,因为权限存在问题。 在基于linux的系统中重启mysql

sudo service mysql restart

在Windows系统中重新启动

net stop mysql
net start mysql

在mysql提示符中刷新权限

FLUSH PRIVILEGES;

如果您知道用户拥有哪些权限

,您也可以使用REVOKE命令
REVOKE privillege1, privillege2, ... FROM deleted_user@host

答案 1 :(得分:1)

必须在mysql系统架构的其他表中引用此用户。我会以与删除它相同的方式重新创建用户:

INSERT INTO mysql.user (user, host, password)
VALUES ('root', 'localhost', PASSWORD('pasw'));

然后

FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';

永远不要搞乱这个架构的另一个原因(抱歉,我无法帮助)。

答案 2 :(得分:0)

至于上述情况,我的案例中不存在password字段,而mysql会抛出错误。

这个命令帮助:

INSERT INTO mysql.user (user, host, ssl_cipher, x509_issuer, x509_subject, plugin, authentication_string) VALUES ('user', 'localhost', '', '', '', 'mysql_native_password', PASSWORD('pass'));