13

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'

按照这个 SO answer,我试过了FLUSH PRIVILEGES;,但我仍然得到同样的错误。

知道出了什么问题吗?


回答

我还必须从mysql.db表中删除相同的内容

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

而已...

4

3 回答 3

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
于 2013-10-02T09:29:45.653 回答
1

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

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

然后

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

另一个永远不要弄乱这个模式的原因(对不起,我帮不上忙)。

于 2013-06-09T10:29:32.373 回答
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'));
于 2017-06-26T10:39:58.213 回答