mysql - 通过 SSH 连接到 R 中的 MySQL 数据库

标签 mysql r ssh rmysql

我想使用 RMySQL 包来查询数据库。在 R 脚本中使用 dbConnect()dbGetQuery() 之前,我通常在我的 mac 终端中输入 ssh website.com

我的数据库在防火墙后面,只能在本地访问,据我所知,需要通过 ssh 进入。

是否可以在 R 中完成整个过程?

我试过 system('ssh website.com')) 没有成功

谢谢

最佳答案

您需要在您的系统和 ssh 服务器之间建立一个端口转发。

将以下内容添加到您的 ~/.ssh/config 文件中:

Host mysql-tunnel-website.com
  LocalForward 3306 localhost:3306

我强烈建议为此使用 SSH key 。 Github's SSH key guide很不错。我不是 R 编码员,但 R 可能不喜欢在 system() 调用和 SSH key (无密码或添加到 ssh-agent 时)中交互式输入密码的需要.

现在您应该能够在 R 中启动隧道:

system('ssh -f mysql-tunnel-website.com')

这会将 website.com 的本地主机端口 3306 映射到您的 ssh 客户端本地主机的端口 3306,允许您在 ssh 客户端系统上运行与在远程 website.com 系统上运行的代码相同的代码。

您的 R 代码需要指向 host=localhostport=3306(这应该是默认值)。

如果远程 SQL 服务器不是由 website.com 的本地主机和端口 3306 提供服务,只需将 localhost:3306 更改为适当的 server:port 组合可从 website.com 访问的内容。如果您无法在您的 ssh 客户端系统上使用端口 3306(也许您正在本地运行 MySQL?),您可以通过将第一个 3306 更改为任何其他端口(我倾向于在数字前加前缀,例如 13306),然后确保在您的 R 代码中指定备用端口(例如 port=13306)。

关于mysql - 通过 SSH 连接到 R 中的 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47310068/

相关文章:

r - ggplot2 堆积条形图 - 未找到对象 y

r - 将命名数值向量拆分为 R 中的不同元素

linux - 通过 SSH 从多个远程主机收集 STDOUT 时的数据完整性问题

mysql - 按列计算 SQL 出现次数

php - ajax 和 php 更新 mysql

mysql - 根据单元格值更新 MySql 表

mysql - 想在UPDATE后写一个触发器

r - 如何按组对变量求和

ssh - 第一次 ssh 连接时主机 key 验证失败

linux - 从 Linux 在 Windows 上进行 FTP 并执行 shell 脚本