Câu hỏi MySQL - Ghép nối từ bất kỳ thứ gì khác ngoài localhost


Lý lịch

Vì vậy, tôi có một máy chủ web trên một pi mâm xôi mà hoạt động hoàn toàn tốt đẹp. Máy chủ web sử dụng MySQL trong nền và các trang web có thể thực hiện các truy vấn mà không có sự cố. Gần đây tôi muốn tạo các kết nối trực tiếp đến máy chủ MySQL thay vì không qua máy chủ web. tôi đã cài phpmyadmin vào máy chủ của tôi (RaspberryPi) và có thể kết nối bằng host.com/phpmyadmin theo sự giúp đỡ của các hướng dẫn trực tuyến. Điều này tất cả các công trình lớn và tôi không có vấn đề vào thời điểm này. Tuy nhiên, bất cứ khi nào tôi cố gắng kết nối từ một trong hai trên internet, hoặc thậm chí trên cùng một mạng, nó không hoạt động.

Những gì tôi đã thử

Vì vậy, từ chính RaspberryPi, tôi đã cài đặt mysql-clientvà tôi có thể kết nối thành công với chính nó và thực hiện một truy vấn. Điều này cho thấy rằng các thông số của tôi về kết nối công việc tại thời điểm này.

Bước tiếp theo, tôi cố gắng kết nối từ một máy tính trong cùng một mạng. Tôi đã chọn sử dụng HeidiSQL làm khách hàng của mình. Tôi có hostname = 192.168.0.106 (IP cục bộ của máy chủ), cổng 3306 hoặc là 80, user = valid người dùng cũng như mật khẩu. Tại thời điểm này, nó không thể kết nối với máy chủ. Tôi đã xác minh rằng cổng đang được sử dụng là 3306, tiêu chuẩn từ khi cài đặt.

Tôi có thiếu cái gì đó từ phía MySQL để cho phép người khác kết nối với nó? Có lẽ một cái gì đó rất đơn giản tôi đang mất tích.


2
2018-05-14 15:08


gốc


Vui lòng cung cấp thông tin có liên quan từ /etc/mysql/my.cnf - Ramhound
có thể bạn cần chỉnh sửa hosts.deny / hosts.allow và nếu bạn sử dụng iptables, bạn cũng cần chỉnh sửa cài đặt tường lửa của mình. Bạn có thể kiểm tra giao diện và cổng mysql đang nghe với netstat -tulpn - suleiman


Các câu trả lời:


Làm cho MySQL nghe trên tất cả các giao diện

Phiên bản MySQL của bạn có thể đang nghe trên giao diện localhost (127.0.0.1, v.v.) theo mặc định *. Bạn có thể làm cho nó nghe trên một giao diện cụ thể, hoặc tất cả các giao diện nếu bạn thích.

Để cho phép nó nghe trên tất cả các giao diện:

  • mở /etc/mysql/my.cnf
  • nhận xét ra dòng bind-address = 127.0.0.1 (→ #bind-address = 127.0.0.1)
  • khởi động lại MySQL (ví dụ sudo service mysql restart hoặc tuy nhiên bạn đang quản lý dịch vụ)

* Lưu ý rằng theo tài liệu, địa chỉ mặc định là 0.0.0.0, nhưng bản phân phối có thể thay đổi điều này.

Tài liệu tham khảo: Tùy chọn lệnh máy chủ (--bind-address)


3
2018-05-14 15:14



Điều này dường như khắc phục vấn đề đầu tiên vì vậy cảm ơn bạn! Bây giờ tôi nhận được "Host" blahblah 'không được phép kết nối với máy chủ MySQL này.Tôi nghĩ rằng tôi chỉ cần cung cấp cho truy cập vào người dùng của tôi cho bất kỳ ipaddress tiếp theo. Dù bằng cách nào cảm ơn bạn đã giải quyết vấn đề của tôi! - Eric F
Hân hạnh; và yup, GRANT USER là bạn của bạn :) Chúc may mắn! - bertieb