R连接到需要SSL的postgresql

时间:2017-02-28 21:38:50

标签: r postgresql ssl

我试图将R连接到需要SSL的postgresql数据库。

这里是使用PSQL时适用于我的连接字符串: postgresql://USERNAME:PASSWORD@HOSTNAME:PORT/DBNAME?ssl=true,用适当的值替换所有大写字符串。

在R中,我不知道如何处理SSL参数。当我尝试 conn = dbConnect(RPostgreSQL::PostgreSQL(), host="HOST", dbname="DBNAME", user="USERNAME", password="PASSWORD", port=PORT)

我得到了

Error in postgresqlNewConnection(drv, ...) : RS-DBI driver: (could not connect USERNAME@HOST on dbname "DBNAME" )

当我尝试conn = dbConnect(RPostgreSQL::PostgreSQL(), host="HOST", dbname="DBNAME", user="USERNAME", password="PASSWORD", port=PORT, ssl=TRUE)

我得到了

Error in postgresqlNewConnection(drv, ...) : unused argument (ssl = TRUE)

Connect to Postgres via SSL using R建议在dbname参数中添加额外信息。我已尝试dbname="DBNAME ssl=TRUE",结果为RS-DBI driver: (could not connect (null)@HOST on dbname "(null)"我在sslmode=allowsslmode=require得到了相同的结果(如上文所述)。

PostgreSQL驱动程序的文档说,在"用户身份验证","传递的字符串可以为空以使用所有默认参数,或者它可以包含一个或多个以逗号分隔的参数设置。每个参数设置的形式为参数=" value"。等号周围的空格是可选的。"但我还没有能够接受除函数原型中显示的三个以外的任何参数。

我没有想法;帮助赞赏。

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

  1. 创建一个配置文件,如“configuration.yml”并添加您的设置: db: host : "your_localhost" dbname : "your_database_name?ssl=true" user : "your_user_name" port : 5432 password : "your_password"

  2. 安装此软件包: install.packages(yaml, dependencies = TRUE) install.package(RPostgreSQL, dependencies = TRUE) install.packages(DBI, dependencies = TRUE)

  3. 运行: driver <- DBI:::dbDriver("PostgreSQL") con <- do.call( RPostgreSQL:::dbConnect, c(drv = driver, yaml:::yaml.load_file("configuration.yml")$db) )

  4. /!\ Note /!\:不要忘记添加此语句 *?ssl=true* 在dbname字段上的configuration.yml文件中。

  5. 希望这有帮助!