无法使用3.5.2.2 - phpMyAdmin for 5.5.27 - MySQL为用户设置密码.在以phpMyAdmin用户身份登录时尝试设置密码时,会弹出以下错误:
#1133 - Can't find any matching row in the user table
Run Code Online (Sandbox Code Playgroud)
以root身份登录时,会弹出以下密码设置成功消息.
SET PASSWORD FOR 'user'@'%' = PASSWORD( '***' )
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,密码都不会设置并保持当前状态,为空白.
pdg*_*137 91
我在不同的上下文中使用MySQL遇到了这个错误(不在phpMyAdmin中).GRANT和SET PASSWORD命令在mysql.user表中列出的特定现有用户上失败.就我而言,它是通过运行修复的
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
该命令的文档说明
从mysql数据库中的授权表重新加载特权.
作为GRANT和CREATE USER语句的结果,服务器将信息缓存在内存中.相应的REVOKE和DROP USER语句不会释放此内存,因此对于执行导致缓存的许多语句实例的服务器,内存使用会增加.可以使用FLUSH PRIVILEGES释放此缓存的内存.
显然,用户表缓存已达到不一致状态,导致此奇怪的错误消息.更多信息可在此处获得.
e.t*_*psy 12
我遇到了这个问题,但在我的情况下,'phpmyadmin'用户的密码与内容不匹配 /etc/phpmyadmin/config-db.php
一旦我更新了'phpmyadmin'用户的密码,错误便消失了.
这些是我采取的步骤:
mysql -uroot -pYOUR_ROOT_PASSuse mysql;UPDATE mysql.user SET Password=PASSWORD('YOUR_PASS_HERE') WHERE User='phpmyadmin' AND Host='localhost';FLUSH PRIVILEGES;DONE!它对我有用.
Ste*_*ane 11
如果尝试为非现有用户授予权限,则会发生此错误.
我不清楚MySQL认为什么是非现有用户.但我怀疑MySQL认为用户存在,如果它可以通过表中的名称(列User)和主机(列Host)找到user.
如果尝试向用户授予可以使用其名称(列User)但不能通过其名称和主机(列User和Host)找到的权限,并且未提供密码,则会发生错误.
例如,以下语句触发错误:
grant all privileges on mydb.* to myuser@'xxx.xxx.xxx.xxx';
Run Code Online (Sandbox Code Playgroud)
这是因为,没有指定密码,MySQL无法创建新用户,因此尝试查找现有用户.但是在表中找不到具有名称myuser和主机的xxx.xxx.xxx.xxx用户user.
提供密码,允许语句成功执行:
grant all privileges on mydb.* to myuser@'xxx.xxx.xxx.xxx' identified by 'mypassword';
Run Code Online (Sandbox Code Playgroud)
如果新的"MySQL用户"是相同的"应用程序用户",请确保重用您认为存在的用户的相同密码.
通过刷新权限完成操作:
flush privileges;
Run Code Online (Sandbox Code Playgroud)
阐述斯蒂芬的回答。
root当我尝试通过运行以下命令向 MySQL 服务器上的用户授予特定数据库的远程连接权限时,出现此错误:
USE database_name;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
Run Code Online (Sandbox Code Playgroud)
这给出了一个错误:
ERROR 1133 (42000): Can't find any matching row in the user table
Run Code Online (Sandbox Code Playgroud)
这是我修复它的方法:
首先,确认您的MySQL服务器允许远程连接。使用您喜欢的文本编辑器打开 MySQL 服务器配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Run Code Online (Sandbox Code Playgroud)
向下滚动到绑定地址行,并确保将其注释掉或替换为0.0.0.0(以允许所有远程连接)或替换为您想要远程连接的Ip 地址。
进行必要的更改后,保存并退出配置文件。通过重新启动 MySQL 服务来应用对 MySQL 配置文件所做的更改:
sudo systemctl restart mysql
Run Code Online (Sandbox Code Playgroud)
接下来,登录到安装它的服务器上的 MySQL 服务器控制台:
mysql -u root -p
Run Code Online (Sandbox Code Playgroud)
输入你的mysql用户密码
检查您想要的用户已经有权访问的主机。就我而言,用户是root:
SELECT host FROM mysql.user WHERE user = "root";
Run Code Online (Sandbox Code Playgroud)
这给了我这个输出:
+-----------+
| host |
+-----------+
| localhost |
+-----------+
Run Code Online (Sandbox Code Playgroud)
接下来,我运行下面的命令,该命令与上一个引发错误的命令类似,但请注意,这次我为其添加了密码:
USE database_name;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my-password';
Run Code Online (Sandbox Code Playgroud)
注意:%授予用户从网络上所有主机的远程访问权限。您可以使用以下命令指定要授予用户访问权限的各个主机的 IP 地址 -GRANT ALL PRIVILEGES ON *.* TO 'root'@'Ip-Address' IDENTIFIED BY 'my-password';
之后我检查了用户现在可以访问的主机。就我而言,用户是root:
SELECT host FROM mysql.user WHERE user = "root";
Run Code Online (Sandbox Code Playgroud)
这给了我这个输出:
+-----------+
| host |
+-----------+
| % |
| localhost |
+-----------+
Run Code Online (Sandbox Code Playgroud)
最后,您可以尝试使用以下命令从另一台服务器连接到 MySQL 服务器:
mysql -u username -h mysql-server-ip-address -p
Run Code Online (Sandbox Code Playgroud)
其中u代表用户,h代表mysql-server-ip-address,p代表密码。所以就我而言是:
mysql -u root -h 34.69.261.158 -p
Run Code Online (Sandbox Code Playgroud)
输入你的mysql用户密码
根据您的MySQL服务器版本,您应该得到以下输出:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.31 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Run Code Online (Sandbox Code Playgroud)
就这样。
我希望这有帮助
事实证明,错误确实很模糊!
1)以root身份登录时设置密码,因为它正在更新MySql下users表中的用户/密码字段.
2)以用户身份登录时,密码实际上没有变化,即使在MySql的users表中指定了密码,config.inc.php文件也允许无密码验证.
解:
false在config.inc.php中更改以下值.
$cfg['Servers'][$i]['AllowNoPassword'] = true;
Run Code Online (Sandbox Code Playgroud)
所以它读取
$cfg['Servers'][$i]['AllowNoPassword'] = false;
Run Code Online (Sandbox Code Playgroud)
更改用户的主机从Any或%向localhost在MySQL用户表.这可以通过phpMyAdmin控制台轻松实现.
这两个更改允许我使用密码验证用户身份,不允许使用密码验证身份验证.
它还允许用户在以用户身份登录时更改其密码.
似乎所有权限,其余的是通过这两个更改修复.