Ich versuche, eine Verbindung zu einer Remote-PostgreSQL-Datenbank von R mit dem RPostgreSQL
-Paket herzustellen, und ich bekomme Fehler, die mit den SSL-Einstellungen für die Verbindung in Verbindung stehen. Ich habe überprüft, dass ich über die Befehlszeile unter Verwendung psql
verbinden kann, so weiß ich, dass die Verbindung gültig ist und von meinem Computer aus zugänglich ist.R RPostgreSQL Verbinden mit Remote-Postgres-Datenbank mit SSL
Mein erster Versuch, in R Anschluss war die folgende (wo <MyHost>
und <MyPass>
wurden in geeigneter Weise für meine Verbindung ausgefüllt):
library(RPostgreSQL)
pg <- dbDriver('PostgreSQL')
con = dbConnect(pg, host=<MyHost>, dbname='warehouse',
user='warehouse', password=<MyPass>, port=5432)
Der Fehler, den ich in R empfangen wurde:
RS-DBI driver: (could not connect [email protected]<MyHost>.com:5432 on
dbname "warehouse": FATAL: no pg_hba.conf entry for host "75.166.243.177",
user "warehouse", database "warehouse", SSL off
Ich verstand, dass ich SSL-Verschlüsselung auf meine Verbindung anwenden musste, und so versuchte ich Folgendes, was für das OP hier funktioniert zu haben scheint: 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)
Der Fehler erhielt ich dann war:
RS-DBI driver: (could not connect [email protected]<MyHost>:5432 on dbname
"warehouse": sslmode value "require" invalid when SSL support is not
compiled in
ich diesen Beitrag (Postgres SSLMode Value "require" Invalid When SSL Support Is Not Compiled Using Foreign Data Wrapper) gefunden, die meine Build von PostgreSQL vorgeschlagen möglicherweise nicht die mitgelieferte --with-openssl
Fahne gehabt haben, wenn es kompiliert wurde, aber laufen pg_config ergab, dass Diese Flagge wurde tatsächlich in meinem Build gesetzt. Dies ist sinnvoll, weil ich mithilfe von SSL eine Verbindung zur Datenbank herstellen konnte, als ich das Befehlszeilenprogramm psql verwendete.
Aus Angst, dass meine PostgreSQL-Installation fehlerhaft sein könnte, habe ich es komplett entfernt. Ich habe dann beide der obigen Snippets von R-Code ausgeführt, nur für Tritte, und ich erhielt genau die gleichen Fehler. Ich habe das nicht erwartet, aber dies scheint darauf hinzudeuten, dass entweder (a) ich keine lokale Installation von PostgreSQL benötige, um das RPostgreSQL
Paket zu verwenden oder (b) ich eine Installation von PostgreSQL irgendwo anders auf meinem Computer installiert habe nicht gebaut mit der --with-openssl
Flagge enthalten. Ich habe locate postgresql
an der Befehlszeile ausprobiert und habe nichts Offensichtliches gesehen, das wie eine separate Installation aussah. In jedem Fall konnte ich noch nicht erfolgreich Verbindung zur Remote-PostgreSQL-Datenbank innerhalb von R.
Ich habe Stack Overflow für Einsicht hier, und es scheint, gibt es eine Reihe von ungelösten Fragen eines ähnlichen Natur, bei der Benutzer aus irgendeinem Grund keine Verbindung mit einem Remote-Server herstellen können. Ich habe versucht, das RPostgres-Paket zu installieren, das Kirill Müller hier unterhält (https://github.com/rstats-db/RPostgres), aber ich konnte die Installation des R-Pakets nicht erkennen, um meine lokale PostgreSQL-Installation zu erkennen, selbst nachdem ich versucht habe, den include- und lib-Pfad manuell mit R CMD INSTALL
anzugeben Fehlermeldung vorgeschlagen (ich habe hier vielleicht etwas verpasst ...). Es hört sich an, als hätten einige Benutzer mit RPostgres
mehr Glück als mit RPostgreSQL
, aber ich konnte dieses Paket nicht installieren.
Ich weiß nicht, was ich sonst tun soll, und werde auf andere Technologien zurückgreifen müssen, wenn ich nicht herausfinden kann, wie ich bald eine Verbindung aufbauen kann. Jede Hilfe würde sehr geschätzt werden.
Hier ist ein bisschen mehr Info. Ich habe 'otool -L RPostgreSQL.so' für mein installiertes' RPostgreSQL'-Paket ausgeführt und die Ausgabe auf '/ usr/lib/libpq.5.dylib' (' otool' ist die Mac-Version von Linux 'ldd', um Bibliotheken zu finden Eine Binärdatei ist verknüpft mit). Dies ist * nicht * der Ort von 'libpq' von meiner Installation von Postgres.app, die hier ist:'/Applications/Postgres.app/Contents/Versions/9.6/lib/libpq.5.dylib'. Ich weiß nicht, woher die Version in '/ usr/lib' stammt, aber es scheint, dass sie nicht mit SSL-Unterstützung kompiliert wurde; Dies ist, was RPostgreSQL verwendet. Wie kann ich 'RPosgreSQL' zwingen, die andere' libpq.5.dylib' zu verwenden? – bmosov01