gpt4 book ai didi

php - 用户 'www-data' @'localhost 的访问被拒绝 - 如何处理?

转载 作者:IT老高 更新时间:2023-10-29 00:20:34 27 4
gpt4 key购买 nike

我昨天遇到了一个奇怪的问题。我有运行 Debian 的服务器,安装了 PHP 4.4.4-8 和 mysql 5.5.9。该服务器为多个网站提供服务。由于某种原因,当我尝试加载网页时,我随机收到错误“用户'www-data'@'localhost'的访问被拒绝(使用密码:否)”。如果我点击刷新页面加载正常,但点击几次后,该消息再次出现。该页面用于连接 mysql 服务器的用户名不是 www-data。

有人遇到过类似的问题吗?

最佳答案

www-data是运行 apache 和 php 的 Debian 用户。如果您在没有有效连接时尝试查询,php/mysql 将尝试使用 <unix-user>@localhost 创建连接没有密码。这是www-data@localhost (using password:NO)来自。

现在开始发生这种情况的最可能原因(尽管它在 2 年前一直运行良好)是您的数据库负载已增加到某些连接无法成功的程度(可能是由于 max_connections 或max_user_connections;尽管这也可能是由于其他限制(如内存、线程等)造成的。发生这种情况时,请调用 mysql_connect将发出一条错误消息,并返回 FALSE .如果您未能检测到此故障,那么您的下一个 mysql 调用(可能是 mysql_query 或 mysql_select_db)将尝试连接到 www-data@localhost - 从而导致您看到的问题。

我建议启用错误报告和错误显示(由@DarkMantis 建议):

ini_set('error_reporting', E_ALL|E_STRICT);
ini_set('display_errors', 1);

另外,请确保您对 mysql_connect 的调用不是前面有 @符号;并确保检查返回值。它应该看起来像这样:

$cxn = mysql_connect('localhost','yourusername','yourpassword');
if( $cxn === FALSE ) { die('mysql connection error: '.mysql_error()); }

关于php - 用户 'www-data' @'localhost 的访问被拒绝 - 如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7671346/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com