2017-09-19 19 views
10

Tôi hiện đang cố gắng chạy một ứng dụng trên máy chủ nhưng khách hàng của tôi rất 'cầu kỳ' về dữ liệu của họ và muốn lưu trữ cơ sở dữ liệu trên máy chủ văn phòng nội bộ của riêng họ. Tôi đã cài đặt MySQL và có thể chạy ứng dụng cục bộ nhưng vì một vài lý do cụ thể mà ứng dụng cần chạy ở nơi khác.Truy cập từ xa MySQL trên Mac Mini/Time Capsule

Về cơ bản, tôi không thể truy cập vào MySQL từ một vị trí khác. Tôi nghĩ rằng trở ngại chính của tôi là chuyển tiếp cổng đến vị trí chính xác. MySQL được cài đặt trên một mac mini với địa chỉ IP cục bộ 192.168.1.242 và router/modem là Apple Time Capsule. Tôi đã thử xem hướng dẫn nhưng tất cả đều có các tùy chọn mà tôi không có quyền truy cập. Tôi đã đính kèm một ảnh chụp màn hình của các tùy chọn mà tôi có quyền truy cập và các cài đặt mà tôi đã thử cho đến nay.

enter image description here enter image description here

thông tin khác có thể cần thiết là:

  • tôi cần phải kết nối từ PHP
  • tôi đã thiết lập một người sử dụng trong vòng MySQL với một ký tự đại diện (%)
  • Tôi đang thử nghiệm nó bằng cách sử dụng sau đây: lệnh trên máy địa phương của tôi trong CMD: mysql -u tên người dùng -h remote_ip_address -p
  • tôi nhận được lỗi sau: ERROR 2003 (HY000): Không thể kết nối đến máy chủ MySQL trên 'REMOTE_IP_ADDRESS' (10061)
  • Firewall bị tắt hoàn toàn trên Mac Mini
  • không có gì trong file my.cnf
  • OS là Sierra

đó là tất cả tôi có thể nghĩ ra vào lúc này nhưng lời khuyên nào sẽ được đánh giá rất nhiều và nhiều hơn nữa bất kỳ thông tin cần thiết có thể là được cung cấp.

PS. rõ ràng tôi không giỏi với máy/mạng MAC

+0

Chỉ cần kiểm tra xem "Remote_ip_address" mà bạn đang truy cập có phải là địa chỉ WAN bên ngoài cho khách hàng không, không phải là IP nội bộ 192.168.1.242 IP. Chính xác? Việc đặt phòng DHCP và Chuyển tiếp cổng trên sân bay có vẻ chính xác. – JNevill

+1

Đúng vậy, tránh các chi tiết nhất định vì mục đích an toàn nhưng có tôi chỉ vào địa chỉ WAN – user1530205

+0

Thay vì dựa vào lệnh MySQL để kiểm tra, bạn có thể chuyển sang netcat ('netcat -vv remote_address 3306') hoặc telnet (' telnet remote_address) 3306') và xem bạn có thể lấy kết nối không. Tôi giả sử bạn không thể đưa ra lỗi mà MySQL được đưa ra, nhưng nó đáng giá một bước khắc phục sự cố. Với 'telnet' bạn có thể gõ' quit' để thoát nếu bạn thực hiện kết nối thành công và cần thoát. – JNevill

Trả lời

0

MySQL có tường lửa nội bộ của người dùng/IP. Thậm chí nếu bạn có thể kết nối địa phương, bạn có thể không có sự cho phép từ xa: (! Cục bộ đầu tiên)

Hãy thử điều này như root người dùng trên máy chủ MySQL

GRANT ALL ON <db>.* TO '<user>'@'<remoteIP>' IDENTIFIED BY '<password>'; 

đâu

<db> là tên của DB

<user> là tên theo đó bạn kết nối

<remoteIP> i của văn phòng bên ngoài của bạn IP TỪ mà bạn đang cố gắng kết nối

<password> nên tự giải thích!

This will explain the options better

1

Đối với bất cứ ai mà đọc này tôi đã có một vấn đề rất cụ thể.Tôi đã cài đặt MySQL bằng homebrew. Homebrew liên kết MySQL với 127.0.0.1 do đó sẽ chỉ cho phép kết nối với MySQL từ cùng một máy cho dù bạn cố gắng làm gì. Để khắc phục nó, tôi phải chỉnh sửa /usr/local/Cellar/mysql//homebrew.mxcl.mysql.plist và thay thế --bind-address = 127.0.0.1 bằng bind-address = *.

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