没有哈希它更新密码并在MYSQL中发生了死胡同

时间:2015-01-30 15:07:26

标签: mysql phpmyadmin wamp

我跑了这个:mysql> update user set User = 'alic' and password = 'X' where User = 'r oot';

,输出为:Query OK, 3 rows affected, 3 warnings (0.07 sec) Rows matched: 3 Changed: 3 Warnings: 3

我尝试使用usernme ='root'和password =''登录PHPMYADMIN 我已登录但问题是我没有任何权限,也没有表格,也没有新帐户,也没有Flushing Privileges!

每当我尝试更新用户表时,我都会Access Denied for ''@'Localhost'ERROR 1133 (42000): Can't find any matching row in the user table

如果仔细观察''@''localhost; 意味着有一个空的用户名''

当我尝试通过PHPMYADMIN更改密码时 此消息会弹出#1133 - Can't find any matching row in the user table

enter image description here

2 个答案:

答案 0 :(得分:0)

因此,如果我正确读取此内容,您运行的MySQL语句会将您的所有root帐户用户名重命名为alic,密码为X,但X不会被哈希,所以基本上你无法以这些用户身份登录,因为密码永远不会匹配。

然后你尝试以root身份登录,这没有给你任何权限 - 因为你以匿名用户身份登录,因为root不再存在。

解决方案与您忘记MySQL密码的方式相同,可以在https://stackoverflow.com/a/6401963/2385479Resetting MySQL root password处回答。在* nix系统上,使用--skip-grant-tables启动MySQL并通过命令行客户端再次设置密码,但是您希望将alic替换为说明使用root的位置。看起来好像是在使用Windows,所有系统的详细说明可以在https://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

的MySQL手册中找到。

总结Windows说明:

  1. 从服务控制面板停止MySQL
  2. 创建包含UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
  3. 变体的文本文件
  4. 从命令行启动服务器:C:\> C:\mysql\bin\mysqld-nt --init-file=C:\\mysql-init.txt引用您在上面创建的文件的实际路径。
  5. 再次,在适当的位置替换用户名alic而不是root,所需的新密码以及步骤2中文本文件的路径。

    获得alic的工作密码后,您可以重新登录并将三个alic用户重命名为`root。

答案 1 :(得分:0)

Isaac让我想起了这种可能性,以下是如何在Windows上使用WAMPServer进行的。

如何重置root用户密码。

停止mysql服务

wampmanager -> MySQL -> Service -> Stop Service

编辑my.ini文件

wampmanager -> MySQL -> my.ini

找到ini文件中的[wampmysqld]部分

在[wampmysqld]或[wampmysqld64]部分之后直接添加此行,具体取决于您是否安装WAMPServer 32位或64位。

skip-grant-tables

重启mysql服务。

wampmanager -> MySQL -> Service -> Start/Resume Service

打开MySQL控制台

wampmanager -> MySQL -> MySQL Console

现在我们要重置root用户的密码,当然这可以用来重置任何用户密码。

mysql>命令提示符下输入以下两个命令,每个命令在一行的末尾都有一个分号,并在每行后按ENTER键向mysql发出命令。

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE user='root';
FLUSH PRIVILEGES;

或者在你的情况下:

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE user='alic';
FLUSH PRIVILEGES;

请注意,更新应该报告它已经更新了多行,因为实际上有3个用户帐户的用户ID为“root”,每个用户帐户具有不同的域,即127.0.0.1,localhost和:: 1

现在在mysql命令promt中输入'quit'以存在mysql。

停止mysql服务

wampmanager -> MySQL -> Service -> Stop Service

编辑my.ini文件

wampmanager -> MySQL -> my.ini

找到ini文件中的[wampmysqld]部分

Remove the 'skip-grant-tables' parameter we added earlier.
**DO NOT Leave this parameter in the ini file its a HUGH security hole.**

重启mysql服务。

wampmanager -> MySQL -> Service -> Start/Resume Service

您现在应该可以使用用户ID“root”和您刚为该用户设置的新密码使用phpmyadmin登录。