如何使用R连接到远程PostgreSQL,需要进行证书验证
发布时间:2020-12-13 16:13:40 所属栏目:百科 来源:网络整理
导读:我正在尝试使用ssl = verify ca模式连接到远程Postgres数据库.我的问题似乎与 Connect to Redshift via SSL using R和 Connect to Postgres via SSL using R类似,但它们无法正常工作.始终是错误 postgresqlNewConnection(drv,…)出错: RS-DBI驱动程序:(无法
我正在尝试使用ssl = verify ca模式连接到远程Postgres数据库.我的问题似乎与
Connect to Redshift via SSL using R和
Connect to Postgres via SSL using R类似,但它们无法正常工作.始终是错误
postgresqlNewConnection(drv,…)出错: 我的代码是这样的 library("RPostgreSQL") host = 'datadb1' dbname = 'test' port = 5432 password = pw username = 'pep' pg_dsn = paste0( 'dbname=',dbname,' ','sslrootcert=',"C://root-ca.crt","sslkey=C://pep.key"," ","sslcert=C://pep.crt",'sslmode=verify-ca' ) dbConnect(RPostgreSQL::PostgreSQL(),dbname=pg_dsn,host=host,port=port,password=password,user=username) 这不是一般的数据库问题,因为我能够使用Python连接到数据库. Error in postgresqlNewConnection(drv,...) : RS-DBI driver: (could not connect pep@datadb1 on dbname "test")
根据错误消息,问题是您正在为用户名和数据库名称传递空值.这表明您的实际代码与您在此处输入的内容不符.我会编写一个10行Rscript程序,它只是连接并抓取一些数据,如下所示:
#!/usr/bin/Rscript library("RPostgreSQL") host = '192.168.36.2' dbname = 'test' port = 5432 password = 'secret' username = 'pep' pg_dsn = paste( 'dbname=','rootCA.pem','sslkey=pem.key','sslcert=pem.crt','sslmode=verify-ca',sep="" ) conn <- dbConnect(RPostgreSQL::PostgreSQL(),user=username) rs <- dbSendQuery(conn,statement="SELECT COUNT(*) FROM users") data <- fetch(rs,n=1) dim(data) 所以我认为这根本不与SSL证书相关,而是你的变量没有像你想象的那样设置. 编辑:我创建了自己的CA并用它来签署服务器证书和客户端证书.我将Postgres 9.3放在一个新的虚拟机上,并且连接正常,双方都需要证书.我可以连接psql和R.所以我担心我无法重现你的问题.但是你的代码中有一些东西看起来很可疑: >你的路径中只需要一个正斜杠,而不是两个. (如果你使用反斜杠,你需要两个.) 'sslcert=pem.crt', 不是这个: 'sslcert=pem.crt', 这些更改中的任何一个都可以解决您的问 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |