Vagrant BoxのPostgresに接続できません-接続が拒否されましたか?


10

まず、私はVagrantとPostgresが初めてです。

http://files.vagrantup.com/lucid32.boxを使用して、問題なくVagrantインスタンスを作成しました。私は実行することだvagrant upvagrant ssh問題なく。

私は、その後の手順 1回のマイナーな変更では、私の代わりに、「PostgreSQLのPostgreSQLの-contribの」の「のpostgresql-8.4-PostGISの」パッケージをインストールしました。

私は使用してサーバーを起動しました:

postgres@lucid32:/home/vagrant$ /etc/init.d/postgresql-8.4 start

vagrantインスタンスにpsql接続している間、問題なくインスタンスに接続するために使用できます。

私のVagrantfileにはすでに追加してありました:

config.vm.forward_port 5432, 5432

しかし、私がローカルホストからpsqlを実行しようとすると、次のようになります:

psql: could not connect to server: Connection refused
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

シンプルなものが足りないと私は確信している。何か案は?

更新:

私はこのような問題への参照を見つけ、記事は以下を使用することを提案しました:

psql -U postgres -h localhost

それで私は得る:

psql: server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.

回答:


5

あなたが言及したブログ投稿の説明は、ubuntuにはまったく正しくありません:彼らは、パッケージ版とうまく混合しない自己コンパイルされたサーバーのインストールからの断片を使用しています。

ubuntuパッケージはユーザーに代わって使用/var/lib/postgresql/<pg-version-number>/<cluster-name>および実行initdbされるため、/ usr / local / pgsql / dataを作成してそのディレクトリに対してinitdbを実行しないでください。

"/tmp/.s.PGSQL.5432"に関するエラーは、このファイルの予想される場所が正しくないことを示しています(ubuntuの場合)。にあるはず/var/run/postgresqlです。これはおそらく、ubuntuと互換性のないパラメーターを使用してinitdbを手動で実行したことが原因です。

非ローカル接続を有効にするために編集するpostgresql.confおよびpg_hba.confファイル/etc/postgresql/8.4/mainは、/ usr / local / pgsql / dataではなく内にある必要があります。

/etc/init.d/postgresql-8.4(/etc/init.dの中に他のすべてのように)、ないpostgresユーザによってルートによって起動する必要があります。

PGD​​ATAは手動で設定しないでください。繰り返しますが、ubuntu postgresパッケージの動作を実際に邪魔するためです。

私の答えは、ブログの投稿からの指示に従うことなく、postgresql-8.4パッケージを削除して再インストールすることです。postgresql-8.4-postgisはpostgresql-8.4に依存しているため、削除されます。また、/ etc / bash.bashrcのPGDATAの設定を元に戻してください。


私は今インストールをやり直していますが、あなたの答えに気づいたのは、パスが間違っていることを示唆していて、Ubuntuがファイルの間違った場所を探していることです。サーバーがubuntuボックスであるときにOSXで実行されているクライアントが原因である可能性がありますか?

だから私は再インストールを行い、まったく同じエラーが発生しました。もう少し調べてみたところ、iptablesで開いているポートがないことがわかりました。ここの指示に従ってください:cyberciti.biz/tips/howto-iptables-postgresql-open-port.html 接続できます。

再インストールが修正の一部であったかどうかは確かには言えませんが、これは間違いなく役に立ちました。私はあなたに勝利を与えているので

クライアントとサーバーが異なるホストにあるpsql -h <server> [optional other arguments]場合、<sql>はサーバー(この場合はubuntuボックス)のホスト名またはIPアドレス(localhostではない)でpsqlを呼び出す必要があります。質問では、このように呼び出しているようには見えないので、すべてのコマンドがサーバーで起動されていると想定していました。とにかく、接続が確立されていたとしても、再インストールが正気な方法であったことは本当にポジティブです。

私はそれを次のように呼んでいます:psql -U postgres -h localhost vagrant port forwarding setup

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.