RPostgreSQL
パッケージを使用してR内からリモートPostgreSQLデータベースに接続しようとしていますが、接続のSSL設定に関連するエラーが表示されています。私はpsql
を使用してコマンドラインから接続できることを確認しているので、接続が有効であり、コンピュータからアクセス可能であることがわかります。 (<MyHost>
と<MyPass>
が私の接続のために適切に記入された場所)次られたRに接続するにR RPostgreSQL SSLを使用したリモートPostgresデータベースに接続
私の最初の試み:
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 [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
これは私が接続に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)
は、私はその後、受信したエラーでした:私はそれがコンパイルされたときのPostgreSQLの私のビルドを提案し、このポスト(Postgres SSLMode Value "require" Invalid When SSL Support Is Not Compiled Using Foreign Data Wrapperが)--with-openssl
フラグが含ま持っていないかもしれない見つけましたが、実行中にpg_configがあることを明らかにした
RS-DBI driver: (could not connect [email protected]<MyHost>:5432 on dbname
"warehouse": sslmode value "require" invalid when SSL support is not
compiled in
この旗は確かに私のビルドに設定されました。 psqlコマンドラインツールを使用したときにSSLを使用してデータベースに接続できたため、これは意味があります。
私のPostgreSQLインストールの恐れがあるかもしれませんが、私は完全に削除しました。私はその後、Rコードの上記スニペットの両方を実行し、ちょうどキックのために、私はまったく同じエラーを受けました。私はこれを期待していませんでしたが、これは、(a)RPostgreSQL
パッケージを使用するためにPostgreSQLをローカルにインストールする必要はありませんか、(b)私のコンピュータ上でPostgreSQLを別の場所にインストールしています。 は、--with-openssl
フラグが組み込まれています。私はlocate postgresql
をコマンドラインで試してみましたが、別のインストールのように見える何も明白ではありませんでした。いずれにしても、まだR内からリモートのPostgreSQLデータベースに正常に接続できませんでした。
ここでは洞察のためにスタックオーバーフローを調べましたが、同様のユーザーは何らかの理由でリモートサーバーとの接続を確立できません。私はここでキルレルミュラーが維持しているRPostgresパッケージをインストールしようとしましたが(https://github.com/rstats-db/RPostgres)、RパッケージをインストールしてローカルのPostgreSQLインストールを認識することができませんでした。エラーメッセージが表示されました(私はここで何かを見逃しているかもしれません...)。 RPostgres
の方がRPostgreSQL
よりも運が良かったようですが、このパッケージをインストールできませんでした。
すぐに接続を確立する方法を見つけることができない場合、私は他に何ができなくなってしまい、他の技術に頼らざるを得ません。どんな助けでも大歓迎です。
もう少し情報があります。インストールされた 'RPostgreSQL'パッケージに対して' otool -L RPostgreSQL.so'を実行しました。出力は '/ usr/lib/libpq.5.dylib'を指していました(' otool'はMac版Linuxの 'ldd'ライブラリですバイナリがリンクされています)。これはPostgres.appをインストールしたときの 'libpq'の場所ではありません。これは'/Applications/Postgres.app/Contents/Versions/9.6/lib/libpq.5.dylib'です。 '/ usr/lib'のバージョンはどこから来たのかわかりませんが、SSLサポートでコンパイルされていないようです。これはRPostgreSQLが使用しているものです。 'RPosgreSQL'に他の' libpq.5.dylib'を強制するにはどうすればいいですか? – bmosov01