Tôi đang cố gắng sử dụng dplyr để kết nối với cơ sở dữ liệu từ xa, mà tôi thường truy vấn thông qua đường hầm ssh.Không thể kết nối với máy chủ MySQL cục bộ thông qua lỗi ổ cắm khi sử dụng SSH tunel
đầu tiên tôi thiết lập một đường hầm ssh như sau:
alias tunnel_ncg='ssh -fNg -L 3307:127.0.0.1:3306 [email protected] mysql5 -h 127.0.0.1:3306 -P 3307 -u mysqluser -p mypassword'
Tại thời điểm này tôi có thể truy cập vào cơ sở dữ liệu bằng cách kết nối với localhost: 3307. Ví dụ:
mysql -h '127.0.0.1' -P 3307 -u mysqluser
Nếu tôi cố gắng truy cập vào cơ sở dữ liệu tương tự thông qua dplyr, tôi nhận được một lỗi phàn nàn rằng nó không thể kết nối với ổ cắm MySQL địa phương:
> conDplyr = src_mysql(dbname = "mydb", user = "mysqluser", password = "mypassword", host = "localhost", port=3307)
Error in .local(drv, ...) :
Failed to connect to database: Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
sự hiểu biết của tôi là RMySQL/dplyr đang cố gắng tìm một tệp socket trong máy tính cục bộ, tuy nhiên họ thực sự cần tìm nó trong máy chủ từ xa. Có cách nào để sửa lỗi này, hoặc một công việc xung quanh?
UPDATE:
Nếu tôi cố gắng kết nối thông qua dbConnect/RMySQL, kết nối hoạt động tốt:
> dbConnect(dbDriver("MySQL"), user="mysqluser", password="mypassword", dbname="mydb", host="127.0.0.1", port=3307)
<MySQLConnection:0,1>
Đối với trường hợp của tôi, mysql bị ràng buộc với IP cục bộ tại 10.x.x.x, vì vậy tôi phải thay thế 127.0.0.1 thành thay thế. Vì vậy, hãy kiểm tra etc/my.cnf trên Linux để đảm bảo bạn đang sử dụng đúng IP. – barryku
Điều này làm việc cho tôi. Kỳ lạ, Django Python sẽ kết nối tốt, nhưng các gói khác nhau của R tất cả đều từ chối! Thật khó chịu. Phiên bản: R 3.4.1. – Deleet