Не могу создать dbConnect для Postgres с SSL
Я использую сервер Postgres-9.4, для которого мне требуется SSL. Когда я подключаюсь к серверу Postgres со своего ноутбука через соединение pgadmin или windows odbc, он работает с SSL. Однако, когда я пытаюсь соединиться с R, используя SSL, это терпит неудачу.
library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv,
user = "postgres",
password = mypasswd,
dbname = "dbname=postgres sslmode=prefer",
host = "192.168.1.179")
Если я установлю свой pg_hba.conf, чтобы разрешить не-ssl-соединения, то это будет работать. Когда я устанавливаю разрешить только SSL-соединения, это не удастся. к несчастью dbConnect
не имеет verbose
вариант, так что я не получаю ничего больше, чем could not connect postgres@192.168.1.179 on dbname "postgres"
Я нашел этот вопрос, который, кажется, говорит о том, что я делаю правильные вещи, но не пойду.
Редактировать:
Я сделал еще несколько копаний и нашел это обсуждение, которое предполагает, что это не будет работать на окнах из-за различных проблем библиотеки / DLL. Этому обсуждению уже несколько лет, поэтому, возможно, оно было решено. Я могу подтвердить, что выполнение вышеописанного в Linux работает.
0 ответов
Насколько я понимаю, проблема заключается в том, что RPostgreSQL использует клиент, не поддерживающий SSL.
Я переключился на пакет RPostgres и заставил его работать. Сначала я установил RPostgres сinstall.packages('RPostgres')
затем использовал этот пакет для соединения с sslmode="require".
library('RPostgres') #Instead of library('RPostgreSQL')
con <- dbConnect(RPostgres::Postgres(),
user = "postgres",
password = mypasswd,
dbname = "postgres",
host = "192.168.1.179",
sslmode = "require")
)