Windows PostgreSQL上的RStudio与RPostgreSQL的SSL连接

时间:2017-02-07 20:49:01

标签: r postgresql ssl

我无法使用RPostgreSQL创建到AWS托管的PostgreSQL数据库的SSL连接。

这是我到目前为止所尝试的内容:

  1. 在AWS上创建了PostgreSQL数据库。
  2. 将数据库参数“rds.force_ssl”设置为1。
  3. https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem
  4. 下载AWS公钥
  5. 使用psql从Windows命令提示符测试连接(它可以正常工作)。
  6. 在R:

    中执行以下操作
    library(RPostgreSQL)
    cert <- paste0("C:/Users/johnr/Downloads/", "rds-combined-ca-bundle.pem")
    dbname <- paste0("dbname=", "flargnog", " ", "sslrootcert=", cert, " ", "sslmode=verify-full")
    host <- "xxxxxx.xxxxx.us-region-2.rds.amazonaws.com"
    con <- dbConnect(dbDriver("PostgreSQL"), user="username", host=host, port=5432, dbname=dbname, password="abcd1234!")
    
  7. 执行最后一个语句后收到错误消息:

    Error in postgresqlNewConnection(drv, ...) : 
    RS-DBI driver: (could not connect username@xxxxxx.xxxxx.us-region-2.rds.amazonaws.com on dbname "flargnog"
    

    如果我将rds.force_ssl设置更改为0(并从dbname中删除ssl内容),则连接正常。

    我查看了与此问题相关的Stackoverflow上的其他帖子。 Thisthis似乎表明由于RPostgreSQL问题而无法建立SSL连接。但是,this post表示您可以。

    任何指导都将不胜感激!

1 个答案:

答案 0 :(得分:0)

您可以尝试使用例如ssh到rds实例putty并将本地端口5432端口转发到远程端口5432.在R中打开ssh连接后,只需连接到localhost:5432 ...

以下是使用putty进行前移的方法:
http://www.akadia.com/services/ssh_putty.html

以下是命令行的工作原理: https://gist.github.com/magnetikonline/3d239b82265398568f31

P.S。:确保您的实例位于接受ssh连接的安全组中 - 端口22