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”用户的密码,错误消失了。
这些是我采取的步骤:
- 以root身份login到mysql:
mysql -uroot -pYOUR_ROOT_PASS
- 更改为“mysql”db:
use mysql;
- 更新'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';
- 冲洗特权:
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
)而不是他的名字和主机(列User
和Host
)授予的权限,并且不提供密码,则会发生错误。
例如,以下语句触发错误:
grant all privileges on mydb.* to myuser@'xxx.xxx.xxx.xxx';
这是因为没有指定密码,MySQL不能创build新的用户,从而试图find一个现有的用户。 但是,在user
表中不能find名称为myuser
和主机xxx.xxx.xxx.xxx
的user
。
而提供密码,则允许声明成功执行:
grant all privileges on mydb.* to myuser@'xxx.xxx.xxx.xxx' identified by 'mypassword';
如果新的“MySQL用户”是相同的“应用程序用户”,请确保重用与您认为存在的用户相同的密码。
通过刷新权限完成操作:
flush privileges;
在我的情况下,我刚刚重命名了一个基于GUI的数据库工具(DbVisualizer)将要更改密码的Mysql用户。 我试图“设置密码”的terminal没有工作(MySQL错误#1133)。
然而, 这个答案对我来说,即使更改密码后,“设置密码”命令仍然无法正常工作。
closuresterminal并打开新的命令后,工作得很好。