微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

昨天我面对一个奇怪的问题.我有服务器运行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(使用密码:NO)来自哪里.

这个现在已经开始发生的最有可能的原因(尽管它在两年前已经运行良好)是您的数据库负载已经增加到某些连接无法成功的程度(可能是由于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()); }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐