www-data
är Debiananvändaren som kör apache och php. Om du försöker en fråga när du inte har en giltig anslutning, kommer php/mysql att försöka skapa en anslutning med <unix-user>@localhost
utan lösenord. Det är här [email protected] (using password:NO)
kommer från.
Den mest troliga anledningen till att detta har börjat hända nu (även om det har fungerat bra i 2 år tidigare) är att din db-belastning har ökat till den punkt där vissa anslutningar inte kan lyckas (troligen på grund av max_connections eller max_user_connections; men detta kan också bero på andra begränsningar som minne, trådar, etc). När detta händer ringer du mysql_connect
kommer att avge ett felmeddelande och returnera FALSE
. Om du misslyckas med att upptäcka detta fel, kommer ditt nästa mysql-anrop (troligen mysql_query, eller mysql_select_db) att försöka ansluta till [email protected]
-- vilket orsakar problemet du ser.
Jag föreslår att du aktiverar felrapportering och felvisning (som föreslagits av @DarkMantis) :
ini_set('error_reporting', E_ALL|E_STRICT);
ini_set('display_errors', 1);
Se också till att ditt samtal till mysql_connect är inte föregås av en @
tecken; och se till att kontrollera returvärdet. Det borde se ut ungefär så här:
$cxn = mysql_connect('localhost','yourusername','yourpassword');
if( $cxn === FALSE ) { die('mysql connection error: '.mysql_error()); }