sql >> Database >  >> RDS >> Mysql

Toegang geweigerd voor gebruiker 'www-data'@'localhost - hoe daarmee om te gaan?

www-data is de Debian-gebruiker die apache en php uitvoert. Als je een query probeert uit te voeren terwijl je geen geldige verbinding hebt, zal php/mysql proberen een verbinding tot stand te brengen met behulp van <unix-user>@localhost zonder wachtwoord. Dit is waar [email protected] (using password:NO) komt vandaan.

De meest waarschijnlijke reden dat dit nu is begonnen (hoewel het al 2 jaar goed werkte) is dat je db-belasting is toegenomen tot het punt waarop sommige verbindingen niet kunnen slagen (waarschijnlijk vanwege max_connections of max_user_connections; hoewel dit kan ook het gevolg zijn van andere limieten zoals geheugen, threads, enz.). Wanneer dit gebeurt, wordt uw oproep naar mysql_connect geeft een foutmelding en retourneert FALSE . Als u deze fout niet kunt detecteren, zal uw volgende mysql-aanroep (waarschijnlijk mysql_query of mysql_select_db) proberen verbinding te maken met [email protected] -- waardoor het probleem wordt veroorzaakt dat u ziet.

Ik raad aan om foutrapportage en foutweergave in te schakelen (zoals voorgesteld door @DarkMantis):

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

Zorg er ook voor dat uw aanroep naar mysql_connect niet . is voorafgegaan door een @ teken; en zorg ervoor dat u de retourwaarde controleert. Het zou er ongeveer zo uit moeten zien:

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


  1. Oracle:functiegebaseerde index selectieve uniciteit

  2. Hoe voeg ik een controlebeperking toe aan een Rails-migratie?

  3. LPAD in SQL Server 2008

  4. SQLite SUM