我似乎无法重新创建一个我已经删除的简单用户,即使是MySQL的根用户。

我的案例:用户'jack'之前存在,但我从mysql中删除了它。用户才能重新创建它。我在那张桌子上没看到这东西的痕迹。如果我对其他一些随机用户名执行这个命令,比如'jimmy',它就能正常工作(就像它最初对'jack'所做的那样)。

我做了什么破坏用户'jack',我如何撤销这个破坏,以重新创建'jack'作为MySQL安装的有效用户?

参见下面的示例。(当然,最初,jack这个词从被创造到被移除之间有很长一段时间。)

mysql> CREATE USER 'jack'@'localhost' IDENTIFIED BY 'test123';
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host from user;
+------------------+-----------------+
| user             | host            |
+------------------+-----------------+
| root             | 127.0.0.1       |
| debian-sys-maint | localhost       |
| jack             | localhost       |
| root             | localhost       |
| root             | russ-elite-book |
+------------------+-----------------+
5 rows in set (0.00 sec)

mysql> delete from user where user = 'jack';
Query OK, 1 row affected (0.00 sec)

mysql> select user,host from user;
+------------------+-----------------+
| user             | host            |
+------------------+-----------------+
| root             | 127.0.0.1       |
| debian-sys-maint | localhost       |
| root             | localhost       |
| root             | russ-elite-book |
+------------------+-----------------+
4 rows in set (0.00 sec)

mysql> CREATE USER 'jack'@'localhost' IDENTIFIED BY 'test123';
ERROR 1396 (HY000): Operation CREATE USER failed for 'jack'@'localhost'
mysql> CREATE USER 'jimmy'@'localhost' IDENTIFIED BY 'test123';
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host from user;
+------------------+-----------------+
| user             | host            |
+------------------+-----------------+
| root             | 127.0.0.1       |
| debian-sys-maint | localhost       |
| jimmy            | localhost       |
| root             | localhost       |
| root             | russ-elite-book |
+------------------+-----------------+
5 rows in set (0.00 sec)

当前回答

MySql的错误解决:错误码1396

Whenever you had try to run query which create a User as Shown Below. MySql> CREATE USER 'springstudent'@'localhost' IDENTIFIED BY 'springstudent'; GRANT ALL PRIVILEGES ON * . * TO 'springstudent'@'localhost'; But when you try to run query which create user within all previleges, Due to bug it create gives previleges without showing user Because of this Problem we need to use this script for flush priviledges MySql> drop user 'springstudent'@'localhost'; flush privileges; create user admin@localhost identified by 'admins_password' After deleting the user, there is need to flush the mysql privileges Then Create User again

Gotchaaa ....Solved ....

其他回答

我也遇到过同样的问题,经过几次搜索,我找到了一个适合我的解决方案。我希望它能帮助你。 由于您已经创建了用户,现在尝试在Mysql控制台中执行FLUSH PRIVILEGES。 这个问题已经出现在MySql bug中了。你也可以看看这个。现在,在刷新之后,您可以创建一个新用户。 遵循以下步骤:

Step-1: Open terminal Ctrl+Alt+T
Step-2: mysql -u root -p  , it will ask for your MySQL password.

现在你可以看到Mysql控制台了。

Step-3: CREATE USER 'username'@'host' IDENTIFIED by 'PASSWORD';

而不是用户名,你可以输入你想要的用户名。如果你在你的本地机器上运行Mysql,那么输入“localhost”而不是主机,否则输入你想访问的服务器名。

实例:创建用户smruti@localhost由“hello”标识;

现在创建了新用户。如果你想给所有的访问然后键入

授予*上的所有特权。* TO 'newuser'@'localhost';

现在您可以通过输入\q退出MySQL。现在再次登录

mysql -u newusername -p,然后按Enter。你可以看到一切。

希望这能有所帮助。

是的,这个bug就在那里。然而,我找到了一个小小的变通办法。

假设用户在那里,那么删除用户 删除用户后,需要刷新mysql权限 现在创建用户。

这应该能解决问题。假设我们要创建admin @ localhost用户,下面的命令如下:

drop user admin@localhost;
flush privileges;
create user admin@localhost identified by 'admins_password'

mysql> DELETE FROM mysql.db WHERE user = 'jack'

重启服务器:

# mysql。服务器重启

然后执行CREATE USER命令。

您不应该以这种方式手动删除用户。MySQL有REVOKE语法用来删除权限,DROP USER语法用来删除权限:

REVOKE priv1,priv2,priv3,etc... FROM 'jack@localhost'; // remove certain privileges
DROP USER 'jack@localhost'; // completely delete the account

最好使用提供的工具,而不是在后台瞎忙活。

删除用户,刷新权限;然后,创建用户。它确实有效!