我试图将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=allow
和sslmode=require
得到了相同的结果(如上文所述)。
PostgreSQL驱动程序的文档说,在"用户身份验证","传递的字符串可以为空以使用所有默认参数,或者它可以包含一个或多个以逗号分隔的参数设置。每个参数设置的形式为参数=" value"。等号周围的空格是可选的。"但我还没有能够接受除函数原型中显示的三个以外的任何参数。
我没有想法;帮助赞赏。
答案 0 :(得分:0)
你可以试试这个:
创建一个配置文件,如“configuration.yml”并添加您的设置:
db:
host : "your_localhost"
dbname : "your_database_name?ssl=true"
user : "your_user_name"
port : 5432
password : "your_password"
安装此软件包:
install.packages(yaml, dependencies = TRUE)
install.package(RPostgreSQL, dependencies = TRUE)
install.packages(DBI, dependencies = TRUE)
运行:
driver <- DBI:::dbDriver("PostgreSQL")
con <- do.call( RPostgreSQL:::dbConnect,
c(drv = driver, yaml:::yaml.load_file("configuration.yml")$db)
)
/!\ Note /!\:不要忘记添加此语句
*?ssl=true*
在dbname字段上的configuration.yml文件中。
希望这有帮助!