我正在尝试使用RPostgreSQL
包从R中连接到远程PostgreSQL数据库,并且我收到的错误似乎与连接的SSL设置有关。我已经验证我可以使用psql
从命令行进行连接,因此我知道连接有效且可以从我的计算机访问。
我在R中连接的第一次尝试是以下内容(其中<MyHost>
和<MyPass>
已正确填写以供我连接):
library(RPostgreSQL)
pg <- dbDriver( 'PostgreSQL' )
con = dbConnect( pg, host=<MyHost>, dbname='warehouse',
user='warehouse', password=<MyPass>, port=5432 )
我在R收到的错误是:
RS-DBI driver: (could not connect warehouse@<MyHost>.com:5432 on
dbname "warehouse": FATAL: no pg_hba.conf entry for host "75.166.243.177",
user "warehouse", database "warehouse", SSL off
我理解这意味着我需要对我的连接应用SSL加密,因此我尝试了以下操作,这似乎对OP有效:Connect to Postgres via SSL using R
library(RPostgreSQL)
pg <- dbDriver( 'PostgreSQL' )
con = dbConnect( pg, host=<MyHost>, dbname='dbname=warehouse sslmode=require',
user='warehouse', password=<MyPass>, port=5432 )
我收到的错误是:
RS-DBI driver: (could not connect warehouse@<MyHost>:5432 on dbname
"warehouse": sslmode value "require" invalid when SSL support is not
compiled in
我发现这篇帖子(Postgres SSLMode Value "require" Invalid When SSL Support Is Not Compiled Using Foreign Data Wrapper)表明我的PostgreSQL构建在编译时可能没有包含--with-openssl
标志,但是运行pg_config显示我的构建确实设置了这个标志。这是有道理的,因为当我使用psql命令行工具时,我能够使用SSL连接到数据库。
由于担心我的PostgreSQL安装可能有问题,我完全删除了它。然后我运行了上述两段R代码,只是为了踢,我收到了完全相同的错误。我没想到这一点,但这似乎表明(a)我不需要本地安装PostgreSQL以便使用RPostgreSQL
包或(b)我在其他地方有一个混杂的PostgreSQL安装我的计算机不包含--with-openssl
标志。我在命令行尝试了locate postgresql
并没有看到任何明显看起来像单独安装的东西。无论如何,我仍然无法从R中成功连接到远程PostgreSQL数据库。
我在这里搜索Stack Overflow以获得洞察力,似乎有许多类似性质的未解决问题,用户由于某种原因无法与远程服务器建立连接。我试图安装KirillMüller在这里维护的RPostgres包(https://github.com/rstats-db/RPostgres),但是我无法让R包安装来识别我的本地PostgreSQL安装,即使在尝试使用{手动指定include和lib路径之后{1}},因为建议的错误消息(我可能在这里遗漏了一些东西......)。听起来有些用户使用R CMD INSTALL
比使用RPostgres
更好运,但同样,我无法安装此软件包。
我无法做其他事情,如果我不知道如何建立连接,我将不得不求助于其他技术。任何帮助将不胜感激。
答案 0 :(得分:3)
感谢发帖!你实际上帮助我们解决了它。我们是这样做的:
Utilities
&gt; Terminal
。csrutil disable
并按Enter键。sudo rm /usr/lib/libpq.5.dylib
sudo ln -s /Applications/Postgres.app/Contents/Versions/9.6/lib/libpq.5.dylib