我有同样的问题Connect to Redshift via SSL using R
但是,给出的答案需要证书验证。我想知道在没有证书验证的情况下是否有办法做到这一点?当我通过SQL客户端连接时,我只需添加此
$docx->replacePlaceholderImage('logo','tmp/'.$filename);
如何在R?
中添加这些参数提前感谢您的帮助!
答案 0 :(得分:5)
不要将verify-full
传递给sslmode
,而是尝试require
或allow
:
dbConnect(dbDriver('PostgreSQL'),
dbname = 'dbname=foobar sslmode=require',
host = 'foobar.redshift.amazonaws.com',
port = 5439,
user = 'foobar',
password = 'foobar')
答案 1 :(得分:4)
https://github.com/r-dbi/RPostgres在这一点上似乎是更现代,更维护的软件包。这就是对我有用的...
install.packages("RPostgres")
require(RPostgres)
db = dbConnect(
Postgres(),
user = 'user',
password = 'password',
dbname = 'dbname',
host = 'host',
port = port,
sslmode = 'require'
)
dbListTables(db)
答案 2 :(得分:0)
我依靠R DBI和odbc软件包。这是我在@ Floris
的帮助下使用的设置~/.postgresql/
上。客户端ssl密钥是所有者拥有的,并且仅由所有者只读。这是我创建服务器和客户端SSL证书所遵循的a guide from jealastic.com。 ls -alh ~/.postgresql/
drwx------ 2 foo staff 122 Jul 23 10:45 ./
drwx------ 54 foo staff 2.1K Jul 23 10:45 ../
-rw-r--r-- 1 foo staff 875 Jul 21 17:42 postgresql.crt
-rw-r--r-- 1 foo staff 631 Jul 21 17:41 postgresql.csr
-r-------- 1 foo staff 891 Jul 21 17:41 postgresql.key
-rw-r--r-- 1 foo staff 1.1K Jul 21 17:40 root.crt
nano ~/.odbcinst.ini
并添加以下内容:[PostgreSQL Driver]
Driver = /home/foo/anaconda3/envs/sql/lib/psqlodbcw.so
使用
conda create --name sql -c conda-forge psqlodbc
在conda env中安装了odbc驱动程序的地方。
nano ~/.odbc.ini
并为要使用有效凭据连接的数据库添加一个或多个条目:[foodb]
Driver = PostgreSQL Driver
Database = foodb
Servername = db.example.com
UserName = foo
Password = mypassword
Port = 5432
sslmode = require
请注意, PostgreSQL驱动程序与〜/ .odbcinst.ini中的相应条目匹配 要了解 sslmode 的类型与安全性和开销之间的关系,请阅读以下内容:https://www.postgresql.org/docs/9.4/libpq-ssl.html
chmod 600 ~/.odbc.ini ~/.odbcinst.ini
library(odbc)
foodb <- dbConnect(odbc::odbc(), "foodb", timeout = 10)
完成!
答案 3 :(得分:0)
这对我有用:
connection <- DBI::dbConnect(RPostgres::Postgres(),
dbname = "dbname",
host = "host",
port = "port",
password = "password",
user = "user_name",
base::list(sslmode="require", connect_timeout="10"),
service = NULL)
因此parameter key words可以作为列表传递。 这也适用于RPostgres 1.1.1和1.2.0。