2011-12-11 32 views
5

Khi tôi đang ở văn phòng, MySQL chạy trên một máy chủ cụ thể được gọi là "mysqldev". Trong tập tin /etc/hosts tôi đã đặt "mysqldev" để khớp với IP của máy chủ này. Càng xa càng tốt. Tuy nhiên, khi tôi ra khỏi văn phòng bằng máy tính xách tay của mình, tôi muốn sử dụng cơ sở dữ liệu MySQL cục bộ của mình, khi tôi sao chép các cơ sở dữ liệu cụ thể ở đó và không có internet để kết nối với cơ sở dữ liệu văn phòng. Tôi không muốn thay đổi kịch bản của mình, nhưng thay vì cấu hình máy tính xách tay của tôi. Vì vậy, trên máy tính xách tay của tôi, tôi đã thiết lập trong /etc/hosts:Sử dụng bí danh cho máy chủ lưu trữ cục bộ trong MySQL

127.0.0.1 localhost mysqldev

Tuy nhiên, đối với một số lý do này không hoạt động như mong đợi. Nếu tôi đăng nhập vào MySQL bằng cách sử dụng máy chủ tại localhost, tất cả đều tốt. Nhưng khi tôi cố gắng đăng nhập vào máy chủ mysqldev (cùng IP như localhost), tôi nhận được lỗi:

Warning: mysqli::mysqli() [mysqli.mysqli]: [2002] Connection refused (trying to connect via tcp://mysqldev:3306)

(đây là sử dụng PHP, nhưng sử dụng dòng lệnh nó là lỗi tương tự)

người sử dụng được thiết lập trên hệ thống có sự cho phép đặc biệt để đăng nhập vào máy chủ này:

CREATE USER 'test'@'mysqldev' IDENTIFIED BY '123';

GRANT ALL PRIVILEGES ON testdb.* TO 'test'@'mysqldev';

Tôi cũng đã tắt tường lửa để kiểm tra và không tạo sự khác biệt. Nó có thể là gì?

Trả lời

6

Thư viện máy khách MySQL cố gắng đoán cách kết nối với cơ sở dữ liệu của bạn. Khi bạn đưa ra localhost như tên máy, nó giả định, rằng bạn đang sử dụng một ổ cắm địa phương (tìm kiếm máy tính của bạn cho một file có tên mysql.sock, có lẽ dưới /var/lib/mysql hoặc /usr/local/mysql/.

Tuy nhiên, khi bạn sử dụng bất cứ điều gì khác, như địa chỉ IP, tên máy chủ khác hoặc trong trường hợp của bạn là mysqldev, nó cố gắng kết nối với máy chủ qua tcp. Từ thông báo lỗi, có vẻ như máy chủ mysql cục bộ của bạn không nghe trên cổng tcp 3306 (mysql) mặc định)

Kiểm tra, nếu my.cnf của bạn (có thể là /etc/my.cnf hoặc /etc/mysql/my.cnf) cho phép sử dụng tcp. Nếu bạn tìm thấy một dòng như

skip-networking 

bình luận nó ra:

#skip-networking 

và khởi động lại máy chủ. Sau đó thử lại để kết nối.


Để tìm hiểu, nơi ổ cắm của bạn, kết nối thông qua localhost và ban hành các lệnh sau:

mysql> show global variables like '%socket%'; 
+---------------+-----------------------------+ 
| Variable_name | Value      | 
+---------------+-----------------------------+ 
| socket  | /var/run/mysqld/mysqld.sock | 
+---------------+-----------------------------+ 
+0

Đó là nó, cảm ơn! –

0

Nếu bạn đang sử dụng MAMP Pro và đang chạy vào các vấn đề, bạn có thể đơn giản bỏ chọn hộp có nhãn "Chỉ cho phép truy cập cục bộ" trong cài đặt Máy chủ MySQL.

Các vấn đề liên quan