Próbuję użyć dplyr do połączenia ze zdalną bazą danych, którą zwykle odpytuję przez tunel SSH.Nie można połączyć się z lokalnym serwerem MySQL przez błąd gniazda podczas korzystania z tunera SSH
ja najpierw skonfigurować tunel ssh tak:
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'
W tym momencie mogę uzyskać dostęp do bazy danych po podłączeniu do localhost: 3307. Na przykład:
mysql -h '127.0.0.1' -P 3307 -u mysqluser
Gdy próbuję uzyskać dostęp do tej samej bazy danych poprzez dplyr, otrzymuję błąd twierdząc, że nie może połączyć się z lokalnym gniazdem MySQL:
> 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)
mi się, że RMySQL/dplyr próbują znaleźć plik gniazda w komputerze lokalnym, jednak naprawdę powinni go szukać na serwerze zdalnym. Czy istnieje sposób, aby to naprawić lub obejść?
UPDATE:
Gdy próbuję się połączyć poprzez dbConnect/RMySQL, połączenie działa prawidłowo:
> dbConnect(dbDriver("MySQL"), user="mysqluser", password="mypassword", dbname="mydb", host="127.0.0.1", port=3307)
<MySQLConnection:0,1>
Dla mojej sprawy, mysql był związany z lokalnym adresem IP na 10.x.x.x, więc zamiast tego muszę zastąpić 127.0.0.1. Dlatego sprawdź etc/my.cnf w systemie Linux, aby upewnić się, że używasz właściwego adresu IP. – barryku
To zadziałało dla mnie. O dziwo, Django Python łączyłoby się dobrze, ale różne paczki R odmawiały! Jak denerwujące. Wersja: R 3.4.1. – Deleet