web-dev-qa-db-ja.com

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

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

http://files.vagrantup.com/lucid32.box を使用して問題なくVagrantインスタンスを作成しました。実行できますvagrant upおよびvagrant ssh問題なし。

私は 説明 を少し変更して、「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.
10
Ben Miller

あなたが言及したブログ投稿の説明は、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ファイルは、/ usr/local/pgsql/dataではなく/etc/postgresql/8.4/main内にある必要があります。

/etc/init.d/postgresql-8.4は、postgresユーザーではなく、rootによって(/etc/init.dの他のすべてと同様に)起動する必要があります。

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

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

5
Daniel Vérité

my cookbook が役立つかもしれません。私はそれをgithubに投稿しました。 Ubuntu 12.04 LTSとPostgreSQL 9.1を構成します。

2
rogelio2k