MySQL错误#1133 – 在用户表中找不到任何匹配的行

无法为使用3.5.2.2的用户设置密码– phpMyAdmin for 5.5.27 – MySQL 。 当以用户身份login到phpMyAdmin时尝试设置密码时,会popup以下错误消息:

 #1133 - Can't find any matching row in the user table 

以root身份login时,popup密码设置成功消息。

 SET PASSWORD FOR 'user'@'%' = PASSWORD( '***' ) 

在任何一种情况下,密码都不会设置,并保持当前状态,为空白。

我在不同的上下文中使用MySQL(不在phpMyAdmin中)遇到这个错误。 GRANT和SET PASSWORD命令在mysql.user表中列出的特定现有用户上失败。 在我的情况下,它是通过运行修复的

 FLUSH PRIVILEGES; 

这个命令的文档说

重新加载MySQL数据库中授予表的权限。

由于GRANT和CREATE USER语句,服务器在内存中caching信息。 这个内存不是由相应的REVOKE和DROP USER语句释放的,所以对于执行导致caching的多个语句实例的服务器来说,内存使用量会增加。 这个caching的内存可以使用FLUSH PRIVILEGES来释放。

显然,用户表caching已经达到了不一致的状态,导致这个奇怪的错误信息。 更多信息可以在这里find 。

我遇到了这个问题,但在我的情况下,'phpmyadmin'用户的密码不匹配/etc/phpmyadmin/config-db.php的内容

一旦我更新了“phpmyadmin”用户的密码,错误消失了。

这些是我采取的步骤:

  1. 以root身份login到mysql: mysql -uroot -pYOUR_ROOT_PASS
  2. 更改为“mysql”db: use mysql;
  3. 更新'phpmyadmin'用户的UPDATE mysql.user SET Password=PASSWORD('YOUR_PASS_HERE') WHERE User='phpmyadmin' AND Host='localhost';UPDATE mysql.user SET Password=PASSWORD('YOUR_PASS_HERE') WHERE User='phpmyadmin' AND Host='localhost';
  4. 冲洗特权: FLUSH PRIVILEGES;

DONE! 它为我工作。

事实certificate,错误确实是非常模糊的!

1)以root身份login时设置了密码,因为它正在更新MySql下的users表中的用户/密码字段。

2)以用户身份login时,密码实际上并没有改变,即使在MySql的users表中指定了一个,config.inc.php文件也允许没有密码的authentication。

解:

config.inc.php中将以下值更改false

 $cfg['Servers'][$i]['AllowNoPassword'] = true; 

所以它读取

 $cfg['Servers'][$i]['AllowNoPassword'] = false; 

在MySql用户表中将用户的主机Any% 更改localhost 。 这可以很容易地通过phpMyAdmin控制台来实现。

这两个更改允许我使用密码进行身份validation,并且不允许没有密码的身份validation。

它也允许用户在以用户身份login时更改密码。

似乎所有的权限,其余的是修改这两个更改。

如果您使用的是PHPMyAdmin,则必须以root身份login才能更改root密码。 在用户放置root比留下密码空白比改变你的密码。

将newdb。*全部授予由'password'标识的newuser @ localhost;

如果尝试为非现有用户授予权限,则会发生此错误。

我不清楚MySQL认为一个不存在的用户。 但是我怀疑MySQL认为用户存在,如果它可以通过user表中的名称(列User )和主机(列Host )find。

如果试图授予用户可以使用其名称(列User )而不是他的名字和主机(列UserHost )授予的权限,并且不提供密码,则会发生错误。

例如,以下语句触发错误:

 grant all privileges on mydb.* to myuser@'xxx.xxx.xxx.xxx'; 

这是因为没有指定密码,MySQL不能创build新的用户,从而试图find一个现有的用户。 但是,在user表中不能find名称为myuser和主机xxx.xxx.xxx.xxxuser

而提供密码,则允许声明成功执行:

 grant all privileges on mydb.* to myuser@'xxx.xxx.xxx.xxx' identified by 'mypassword'; 

如果新的“MySQL用户”是相同的“应用程序用户”,请确保重用与您认为存在的用户相同的密码。

通过刷新权限完成操作:

 flush privileges; 

在我的情况下,我刚刚重命名了一个基于GUI的数据库工具(DbVisualizer)将要更改密码的Mysql用户。 我试图“设置密码”的terminal没有工作(MySQL错误#1133)。

然而, 这个答案对我来说,即使更改密码后,“设置密码”命令仍然无法正常工作。

closuresterminal并打开新的命令后,工作得很好。