Can';t在R中通过SSH连接到MySQL服务器 背景

Can';t在R中通过SSH连接到MySQL服务器 背景,mysql,r,ssh,r-dbi,Mysql,R,Ssh,R Dbi,我正在尝试从云MySQL服务器中提取数据。我刚刚将数据库从共享服务器移动到专用云服务器。在老地方一切正常。新位置需要SSH隧道 研究/信息: 我所发现的相似之处是。它实际上并不适用,因为我从未使用过localhost 我可以在Sequel Pro和MySQL Workbench中使用相同的凭据成功连接,但是我无法让R脚本发挥作用 我可以通过命令行连接到mysql 我没有在本地安装mysql。(除非它附带High Sierra;我不知道。在任何情况下,如果有本地MySQL实例,它都不会运行。) 代

我正在尝试从云MySQL服务器中提取数据。我刚刚将数据库从共享服务器移动到专用云服务器。在老地方一切正常。新位置需要SSH隧道

研究/信息: 我所发现的相似之处是。它实际上并不适用,因为我从未使用过localhost

我可以在Sequel Pro和MySQL Workbench中使用相同的凭据成功连接,但是我无法让R脚本发挥作用

我可以通过命令行连接到mysql

我没有在本地安装mysql。(除非它附带High Sierra;我不知道。在任何情况下,如果有本地MySQL实例,它都不会运行。)

代码: 以下是失败之处:

con <- dbConnect(RMariaDB::MariaDB(),
                 user = 'soundings_app',
                 password = keyringr::decrypt_kc_pw("Soundings_app"),
                 host = '127.0.0.1',
                 port = 3306,
                 dbname='UFO')
我唯一的猜测 我唯一能想到的是SequelPro和Workbench都有一个地方可以输入我私钥的位置(
~/.ssh

你能解释一下我做错了什么吗

更新 我将主机添加到我的./ssh/config文件中,如下所示:

Host XXX.XXX.130.0
  LocalForward 3306 localhost:3306
这导致我的其他连接失败,所以我删除了它。但Sequel Pro在我尝试连接~/.ssh/config时提供了以下信息:

Used command:  /usr/bin/ssh -v -N -S none -o ControlMaster=no -o ExitOnForwardFailure=yes -o ConnectTimeout=10 -o NumberOfPasswordPrompts=3 -i /Users/steves2018air/.ssh/id_rsa -o TCPKeepAlive=no -o ServerAliveInterval=60 -o ServerAliveCountMax=1 ubuntu@XXX.XXX.130.0 -L 49700:127.0.0.1:3306

OpenSSH_7.6p1, LibreSSL 2.6.2
debug1: Reading configuration data /Users/steves2018air/.ssh/config
debug1: /Users/steves2018air/.ssh/config line 1: Applying options for XXX.XXX.130.0
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug1: Control socket " none" does not exist
debug1: Connecting to XXX.XXX.130.0 [XXX.XXX.130.0] port 22.
debug1: fd 3 clearing O_NONBLOCK
debug1: Connection established.
debug1: identity file /Users/steves2018air/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /Users/steves2018air/.ssh/id_rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.4
debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.4 pat OpenSSH* compat 0x04000000
debug1: Authenticating to XXX.XXX.130.0:22 as 'ubuntu'
更新二 一时兴起,我尝试将主机从“127.0.0.1”更改为“localhost”,只是想看看会发生什么,以及这是否会有什么启示。稍有不同的错误:

Error in connection_create(host, username, password, dbname, as.integer(port),  : 
  Failed to connect: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

仍然没有解决方案或解释-你能帮忙吗?

我花了很长时间,但我是这样解决的:

我将此添加到/etc/mysql/.my.cnf:

[destination]
 user=`username`
 port=3308
 proto=TCP
然后,我使用以下方式连接到云服务器:

ssh ubuntu@xxx.xxx.xxx.x -L 3308:127.0.0.1:3306
我可以在R之外的终端窗口中运行它,也可以在RStudio的终端窗口中运行它-无论哪种方式,以下操作都有效:

con <- dbConnect(RMariaDB::MariaDB(),
                 user = '`username`',
                 password = decrypt_kc_pw("`pw_profile_name`"),
                 groups = "destination",
                 default.file = "/etc/mysql/.my.cnf",
                 host = '127.0.0.1',
                 port = 3308,
                 dbname='`db_name`')

conSteve,谢谢你,在做了一些小改动后,它对我非常有效

我的文件保存在/etc/mysql/mariadb.cnf文件中

con <- dbConnect(RMariaDB::MariaDB(),
user = "yourusername",
password = "yourpassword",
groups = "destination",
default.file = "/etc/mysql/mariadb.cnf",
host = '127.0.0.1',
port = 3308,
dbname="yourdb_name")
con
con <- dbConnect(RMariaDB::MariaDB(),
user = "yourusername",
password = "yourpassword",
groups = "destination",
default.file = "/etc/mysql/mariadb.cnf",
host = '127.0.0.1',
port = 3308,
dbname="yourdb_name")