www-data
là người dùng Debian chạy apache và php. Nếu bạn cố gắng truy vấn khi không có kết nối hợp lệ, php / mysql sẽ cố gắng tạo kết nối bằng cách sử dụng <unix-user>@localhost
không có mật khẩu. Đây là nơi [email protected] (using password:NO)
đến từ.
Lý do rất có thể khiến điều này bắt đầu xảy ra ngay bây giờ (mặc dù nó đã chạy tốt trong 2 năm trước đó) là tải db của bạn đã tăng đến mức một số kết nối không thể thành công (có thể do max_connections, hoặc max_user_connections; mặc dù điều này cũng có thể là do các giới hạn khác như bộ nhớ, luồng, v.v.). Khi điều này xảy ra, cuộc gọi của bạn tới mysql_connect
sẽ phát ra thông báo lỗi và trả về FALSE
. Nếu bạn không phát hiện ra lỗi này, thì lệnh gọi mysql tiếp theo của bạn (có thể là mysql_query hoặc mysql_select_db) sẽ cố gắng kết nối với [email protected]
- do đó gây ra sự cố mà bạn đang gặp phải.
Tôi khuyên bạn nên bật báo cáo lỗi và hiển thị lỗi (theo đề xuất của @DarkMantis):
ini_set('error_reporting', E_ALL|E_STRICT);
ini_set('display_errors', 1);
Ngoài ra, hãy đảm bảo rằng cuộc gọi đến mysql_connect của bạn là không đứng trước @
ký tên; và đảm bảo kiểm tra giá trị trả về. Nó sẽ trông giống như thế này:
$cxn = mysql_connect('localhost','yourusername','yourpassword');
if( $cxn === FALSE ) { die('mysql connection error: '.mysql_error()); }