Sto tentando di utilizzare dplyr per connettersi a un database remoto, che di solito interrogare tramite un tunnel ssh.Impossibile connettersi al server MySQL locale tramite errore socket quando si utilizza il tunel SSH
ho messo un tunnel ssh come la seguente:
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'
A questo punto posso accedere al database collegandosi a localhost: 3307. Per esempio:
mysql -h '127.0.0.1' -P 3307 -u mysqluser
Se provo ad accedere allo stesso database tramite dplyr, ottengo un errore dice che non è in grado di connettersi alla presa locale 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)
mia comprensione è che RMySQL/dplyr sta cercando di cercare un file socket nel computer locale, tuttavia dovrebbero cercarlo sul server remoto. C'è un modo per risolvere questo problema o una soluzione?
UPDATE:
Se provo a connettersi tramite collegamento database/RMySQL, la connessione funziona bene:
> dbConnect(dbDriver("MySQL"), user="mysqluser", password="mypassword", dbname="mydb", host="127.0.0.1", port=3307)
<MySQLConnection:0,1>
Per il mio caso, mysql era associato all'IP locale a 10.x.x.x, quindi devo sostituire 127.0.0.1 con quello. Pertanto, controlla etc/my.cnf su Linux per assicurarti di utilizzare l'IP corretto. – barryku
Questo ha funzionato per me. Stranamente, Django Python si collegherebbe perfettamente, ma i vari pacchetti di R si sono tutti rifiutati! Che noioso. Versione: R 3.4.1. – Deleet