Mysql
 sql >> база данни >  >> RDS >> Mysql

Достъпът е отказан за потребител 'www-data'@'localhost - как да се справим с това?

www-data е потребителят на Debian, който изпълнява apache и php. Ако опитате заявка, когато нямате валидна връзка, php/mysql ще се опита да създаде връзка с помощта на <unix-user>@localhost без парола. Това е мястото, където [email protected] (using password:NO) идва от.

Най-вероятната причина това да е започнало да се случва сега (въпреки че работи добре преди 2 години) е, че натоварването на базата данни се е увеличило до точката, в която някои връзки не могат да успеят (вероятно поради max_connections или max_user_connections; все пак това може да е резултат и от други ограничения като памет, нишки и т.н.). Когато това се случи, вашето обаждане до mysql_connect ще издаде съобщение за грешка и ще върне FALSE . Ако не успеете да откриете този неуспех, тогава следващото ви извикване на mysql (вероятно mysql_query или mysql_select_db) ще се опита да се свърже с [email protected] -- по този начин причинява проблема, който виждате.

Предлагам да активирате отчитане на грешки и показване на грешки (както е предложено от @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()); }


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обработка на транзакции в MySQL

  2. Изтриване на MySQL с Group By

  3. Изпълнение на миграции с Rails в Docker контейнер с множество екземпляри на контейнера

  4. php mysql пълнотекстово търсене:lucene, sphinx или?

  5. GeoDjango &MySQL:точките не могат да бъдат NULL, каква друга празна стойност трябва да използвам?