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()); }