PHP MySQLi查询 - “权限被拒绝”

5

我正在使用PHP MySQLi连接MySQL数据库,有时候会出现错误:

"Permission denied" 错误代码:2002。

奇怪的是,它发生在不同的查询中,完全是不可预测的。例如,在前两个查询正确执行后,可能会在第三个查询中发生。

我知道这不是MySQL的问题,因为我将其从一个服务器移动到另一个服务器,问题仍然存在。最有可能的问题是PHP或PHP与MySQL服务器之间的互连问题(它们位于不同的机器上)。

有人有想法吗?

编辑:
如果重新启动脚本,则可以运行“Permission denied”查询-这不是权限问题

错误:

[23-Apr-2011 19:00:02] PHP Warning: mysqli::mysqli() [mysqli.mysqli]: [2002] Permission denied (trying to connect via tcp://xxx.xxx.xxx.xxx:3306) in /home/.../DB.php on line 19
[23-Apr-2011 19:00:02] PHP Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2002): Permission denied in /home/.../DB.php on line 19


请在此处放置完整的错误消息。 - zerkms
可能是超时了还是受到了DDoS保护? - Jess
但如果是超时问题,我不会收到“超时”错误吗? - RolandasR
请参考<a href="https://dev59.com/82Yr5IYBdhLWcg3wVYog">此帖子</a>。我曾经遇到同样的问题,但是这个帖子解决了我的问题。 - Kimutai
我知道这个问题的重复已经比这个问题更新了,但是那里的答案提供了一种比仅禁用SELinux更好的方法来解决SELinux对数据库连接的干扰。 - miken32
4个回答

20

我的环境也发生了同样的事情。原因是SELinux。

你可以通过在命令行中执行php来连接数据库,而在Web服务器上执行可能无法连接。

在我的情况下,我关闭了SELinux。

# setenforce 0

或者你需要正确设置SELinux。


2
我总是在新服务器安装时忘记 SELinux,它总是以某种方式打断工作流程。感谢提醒让我可以继续前进。 - mr-euro
2
关于如何正确设置SELinux的想法,请参阅以下问题的已接受答案:https://serverfault.com/questions/240015/how-do-i-allow-mysql-connections-through-selinux - site

0

我认为数据库用户没有足够的权限在特定的MySQL表上执行特定的操作。


但如果没有权限,我将无法运行其他查询。而同样的查询在其他时候却可以正常工作。 - RolandasR

0

这不是权限错误。客户端无法连接到数据库,更不用说尝试认证用户了。

我怀疑这些问题可能是由网络问题(阻止客户端/服务器机器之间的通信)或远程主机上MySQL服务器进程未运行引起的。

错误代码记录在这里:http://dev.mysql.com/doc/refman/5.5/en/can-not-connect-to-server.html


-1

检查您通过连接的用户的权限


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接