如何使用R连接到远程PostgreSQL,需要进行证书验证

如何使用R连接到远程PostgreSQL,需要进行证书验证,第1张

概述我正在尝试使用ssl = verify ca模式连接到远程Postgres数据库.我的问题似乎与 Connect to Redshift via SSL using R和 Connect to Postgres via SSL using R类似,但它们无法正常工作.始终是错误 postgresqlNewConnection(drv,…)出错:   RS-DBI驱动程序:(无法连接(null)@ 我正在尝试使用ssl = verify ca模式连接到远程Postgres数据库.我的问题似乎与 Connect to Redshift via SSL using R和 Connect to Postgres via SSL using R类似,但它们无法正常工作.始终是错误

postgresqlNewConnection(drv,…)出错:
RS-DBI驱动程序:(无法连接(null)@ datadb1在db@R_502_6889@“(null)”

我的代码是这样的

library("RPostgresql")host = 'datadb1'db@R_502_6889@ = 'test'port = 5432password = pwuser@R_502_6889@ = 'pep'pg_dsn = paste0(  'db@R_502_6889@=',db@R_502_6889@,' ','sslrootcert=',"C://root-ca.crt","sslkey=C://pep.key"," ","sslcert=C://pep.crt",'sslmode=verify-ca')dbConnect(RPostgresql::Postgresql(),db@R_502_6889@=pg_dsn,host=host,port=port,password=password,user=user@R_502_6889@)

这不是一般的数据库问题,因为我能够使用Python连接到数据库.
更新:我在指定路径时犯了一个错误;错误实际上是这样的:

Error in postgresqlNewConnection(drv,...) : RS-DBI driver: (Could not connect pep@datadb1 on db@R_502_6889@ "test")
根据错误消息,问题是您正在为用户名和数据库名称传递空值.这表明您的实际代码与您在此处输入的内容不符.我会编写一个10行Rscript程序,它只是连接并抓取一些数据,如下所示:
#!/usr/bin/Rscriptlibrary("RPostgresql")host = '192.168.36.2'db@R_502_6889@ = 'test'port = 5432password = 'secret'user@R_502_6889@ = 'pep'pg_dsn = paste(                'db@R_502_6889@=','rootCA.pem','sslkey=pem.key','sslcert=pem.crt','sslmode=verify-ca',sep=""                )conn <- dbConnect(RPostgresql::Postgresql(),user=user@R_502_6889@)rs <- dbSendquery(conn,statement="SELECT COUNT(*) FROM users")data <- fetch(rs,n=1)dim(data)

所以我认为这根本不与SSL证书相关,而是你的变量没有像你想象的那样设置.

编辑:我创建了自己的CA并用它来签署服务器证书和客户端证书.我将Postgres 9.3放在一个新的虚拟机上,并且连接正常,双方都需要证书.我可以连接psql和R.所以我担心我无法重现你的问题.但是你的代码中有一些东西看起来很可疑:

>你的路径中只需要一个正斜杠,而不是两个. (如果你使用反斜杠,你需要两个.)
>在sslmode之前需要一个空格,如下所示:

'sslcert=pem.crt',

不是这个:

'sslcert=pem.crt',

这些更改中的任何一个都可以解决您的问

总结

以上是内存溢出为你收集整理的如何使用R连接到远程PostgreSQL,需要进行证书验证全部内容,希望文章能够帮你解决如何使用R连接到远程PostgreSQL,需要进行证书验证所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1164253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存