通过R中的Bastion使用RMySQL库连接到MySQL服务器

时间:2015-08-26 22:17:05

标签: r ssh rmysql

在我的本地机器上,我有ssh进入堡垒,然后我可以连接到远程MySQL服务器。我知道这是有效的,因为在终端,它说我已经成功连接,当我使用像SQLPro这样的应用程序并尝试使用正确的权限连接到MySQL服务器时,我能够成功登录。此外,命令线

mysql -u username -p

在我ssh之后工作。

现在,我正在尝试使用库RMySQL连接到服务器并使用

con<-dbConnect(MySQL(), user = "username", password = "pw", host = "127.0.0.1")

我得到了回报

Error in .local(drv, ...) : Failed to connect to database: Error: Can't connect to MySQL server on '127.0.0.1' (61)

似乎R无法确定我已连接到堡垒。我之所以这么说,是因为我之前在远程服务器上使用了上面这一行,它运行得很好。

2 个答案:

答案 0 :(得分:0)

con<-dbConnect(MySQL(), user = "username", password = "pw", host = "localhost")

如果您有工作台,请转到服务器 - &gt;客户端连接并检查主机名。您的主机名可能不正确

答案 1 :(得分:0)

我在 linux 上运行 R。

经过几个小时的搜索,AWS 的以下文档终于给了我通过 AWS 堡垒主机连接到 RDS 实例所需的命令:

https://aws.amazon.com/premiumsupport/knowledge-center/rds-connect-using-bastion-host-linux/

上面链接中的“语法 2”为我设置了隧道:

ssh -i "Private_key.pem" -f -N -L 3306:RDS_Instance_Endpoint:3306 ec2-user@EC2-Instance_Endpoint -v

这成功地将我的本地端口 127.0.0.1:3306 转发到 RDS 端口 3306。

然后我从 R 中连接到 RDS 实例:

cn = dbConnect(RMariaDB::MariaDB(), user = "myDataBaseUserName", password = "myPassword", host = "127.0.0.1", dbname = "mySchemaName")