Khi bạn chỉ sử dụng "localhost", thư viện máy khách MySQL sẽ cố gắng sử dụng ổ cắm miền Unix cho kết nối thay vì kết nối TCP / IP. Lỗi cho bạn biết rằng ổ cắm, được gọi là MySQL
, không thể được sử dụng để tạo kết nối, có thể vì nó không tồn tại (lỗi số 2).
Từ Tài liệu MySQL :
Trên Unix, các chương trình MySQL xử lý tên máy chủ lưu trữ là localhost đặc biệt, có thể khác với những gì bạn mong đợi so với các chương trình dựa trên mạng khác. Đối với các kết nối đến máy chủ cục bộ, chương trình MySQL cố gắng kết nối với máy chủ cục bộ bằng cách sử dụng tệp ổ cắm Unix. Điều này xảy ra ngay cả khi tùy chọn --port hoặc -P được đưa ra để chỉ định số cổng. Để đảm bảo rằng máy khách tạo kết nối TCP / IP với máy chủ địa phương, hãy sử dụng --host hoặc -h để chỉ định giá trị tên máy chủ là127.0.0.1, hoặc địa chỉ IP hoặc tên của máy chủ cục bộ. Bạn cũng có thể chỉ định giao thức kết nối một cách rõ ràng, ngay cả đối với máy chủ cục bộ, bằng cách sử dụng tùy chọn --protocol =TCP.
Có một số cách để giải quyết vấn đề này.
- Bạn chỉ có thể sử dụng TCP / IP thay vì ổ cắm Unix. Bạn sẽ thực hiện việc này bằng cách sử dụng
127.0.0.1
thay vìlocalhost
khi bạn kết nối. Tuy nhiên, ổ cắm Unix có thể sử dụng nhanh hơn và an toàn hơn. - Bạn có thể thay đổi ổ cắm trong
php.ini
:mở tệp cấu hình MySQLmy.cnf
để tìm nơi MySQL tạo socket và đặtmysqli.default_socket
của PHP đến con đường đó. Trên hệ thống của tôi, đó là/var/run/mysqld/mysqld.sock
. -
Định cấu hình ổ cắm trực tiếp trong tập lệnh PHP khi mở kết nối. Ví dụ:
$db = new MySQLi('localhost', 'kamil', '***', '', 0, '/var/run/mysqld/mysqld.sock')