出现错误 - 在用户表中找不到任何匹配的行

Posted

技术标签:

【中文标题】出现错误 - 在用户表中找不到任何匹配的行【英文标题】:Getting Error - Can't find any matching row in the user table 【发布时间】:2015-02-11 13:59:01 【问题描述】:

我创建了一个新数据库,创建了一个用户并授予该用户所有访问权限。但是当我尝试为localhost 设置密码时。我收到错误 -

Can't find any matching row in the user table

这是我在 php 代码中所做的 -

mysql_query("CREATE DATABASE ".$ThisDBName."",$con1) or die(mysql_error());

mysql_query("GRANT ALL ON ".$ThisDBName.".* to  ".$ThisDBUserName." identified by '".$ThisDBPassword."'",$con1) or die(mysql_error());

我搜索了这个错误并尝试在SET PASSWORD之前使用FLUSH PRIVILEGES

mysql_query("FLUSH PRIVILEGES",$con1) or die(mysql_error());

mysql_query("SET PASSWORD FOR " . $ThisDBUserName ." @'localhost' = PASSWORD(".$ThisDBPassword.")",$con1) or die(mysql_error());

但我仍然遇到同样的错误,无法使用 mysql_connect() 连接。

我也尝试了this similar question 的答案,但这对我也不起作用。

【问题讨论】:

如果您无法使用mysql_ 连接,您是否尝试过mysqli_?另外,您正在运行什么类型的网络服务器? .""mysql_query("CREATE DATABASE ".$ThisDBName."",$con1) 中有什么意义? 当您刚刚使用grant 设置密码时,为什么要分开set password @Fred-ii-是的,我尝试使用 msqli_ 但遇到了同样的问题 - '拒绝用户访问'。我正在使用 xampp localhost。 @MarcinOrlowski 我使用set passwordloaclhost 设置密码。因为当我尝试使用 mysql_connect() 连接到数据库时出现错误 -` 用户 'mydb_11161'@'localhost' 的访问被拒绝。 【参考方案1】:

您的GRANT 缺少主机掩码。这应该允许您的用户来自任何主机:

mysql_query("GRANT ALL ON ".$ThisDBName.".* to "
              .$ThisDBUserName."@'%' identified by '"
              .$ThisDBPassword."'",$con1) or die(mysql_error());

查看 GRANT 语法:https://dev.mysql.com/doc/refman/5.6/en/grant.html

【讨论】:

我在上面试过但无法连接到数据库。遇到同样的问题 - Access denied for user 'mydb_11170'@'localhost'

以上是关于出现错误 - 在用户表中找不到任何匹配的行的主要内容,如果未能解决你的问题,请参考以下文章

java.sql.SQLSyntaxErrorException:用户缺少特权或在 ubuntu 中找不到对象

为啥 XCode 4 在构建过程中找不到我的 .h 文件?

在 SQL Server 2008 中找不到用户定义的函数

由于在 Angular 6 中找不到标头而导致的 CrossOrigin 错误

在我们的缓存中找不到任何与“最新”匹配的“cra-template-typescript”版本

R - 在用户定义的函数中找不到对象