Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Odmowa dostępu dla użytkownika 'www-data'@'localhost - jak sobie z tym poradzić?

www-data jest użytkownikiem Debiana, który uruchamia Apache i php. Jeśli spróbujesz wykonać zapytanie, gdy nie masz prawidłowego połączenia, php/mysql spróbuje utworzyć połączenie przy użyciu <unix-user>@localhost bez hasła. Tutaj [email protected] (using password:NO) pochodzi z.

Najbardziej prawdopodobnym powodem, dla którego zaczęło się to teraz (choć działało to dobrze przez 2 lata wcześniej), jest to, że obciążenie bazy danych wzrosło do punktu, w którym niektóre połączenia nie mogą się powieść (prawdopodobnie z powodu max_connections lub max_user_connections; chociaż może to również wynikać z innych ograniczeń, takich jak pamięć, wątki itp.). Kiedy tak się stanie, twoje wezwanie do mysql_connect wyemituje komunikat o błędzie i zwróci FALSE . Jeśli nie uda Ci się wykryć tego błędu, następne wywołanie mysql (prawdopodobnie mysql_query lub mysql_select_db) podejmie próbę połączenia z przykł[email protected] -- powodując w ten sposób problem, który widzisz.

Proponuję włączyć raportowanie błędów i wyświetlanie błędów (zgodnie z sugestią @DarkMantis):

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

Upewnij się również, że połączenie z mysql_connect nie poprzedzone @ znak; i upewnij się, że sprawdziłeś wartość zwrotu. Powinno to wyglądać mniej więcej tak:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przygotowana instrukcja PHP PDO -- zapytanie MySQL LIKE

  2. Tabele przestawne MySQL — wiersze do kolumn. Zapytanie

  3. Łączenie warunku z dwóch kolumn mysql

  4. Sterownik Mysql JDBC ClassNotFoundException

  5. BŁĄD 1064 (42000) w MySQL