Tidak dapat terhubung ke Postgres di Vagrant Box - Koneksi ditolak?

10

Pertama, saya baru mengenal Vagrant dan Postgres.

Saya membuat instance Vagrant saya menggunakan http://files.vagrantup.com/lucid32.box tanpa masalah. Saya dapat menjalankan vagrant updan vagrant sshtanpa masalah.

Saya mengikuti instruksi dengan satu perubahan kecil, saya menginstal paket "postgresql-8.4-postgis" alih-alih "postgresql postgresql-contrib".

Saya memulai server menggunakan:

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

Saat terhubung ke instance gelandangan yang bisa saya gunakan psqluntuk menghubungkan ke instance tanpa masalah.

Dalam Vagrantfile saya, saya sudah menambahkan:

config.vm.forward_port 5432, 5432

tetapi ketika saya mencoba menjalankan psql dari localhost saya mendapatkan:

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

Saya yakin saya kehilangan sesuatu yang sederhana. Ada ide?

Memperbarui:

Saya menemukan referensi untuk masalah seperti ini dan artikel yang disarankan menggunakan:

psql -U postgres -h localhost

dengan yang saya dapatkan:

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

Jawaban:

5

Instruksi dari posting blog yang Anda sebutkan tidak benar sama sekali untuk ubuntu: mereka menggunakan potongan-potongan dari instalasi server yang dikompilasi sendiri yang tidak tercampur dengan baik dengan versi paket.

Seseorang seharusnya tidak membuat / usr / local / pgsql / data dan menjalankan initdb ke direktori itu, karena paket ubuntu menggunakan /var/lib/postgresql/<pg-version-number>/<cluster-name>dan berjalan initdbatas nama pengguna.

Kesalahan yang menyebutkan "/tmp/.s.PGSQL.5432" menunjukkan bahwa lokasi yang diharapkan untuk file ini salah (untuk ubuntu). Itu harus di /var/run/postgresql. Ini mungkin karena menjalankan initdb secara manual dengan parameter yang tidak kompatibel dengan ubuntu.

File postgresql.conf dan pg_hba.conf yang akan diedit untuk mengaktifkan koneksi non-lokal harus ada di dalam /etc/postgresql/8.4/main, dan bukan / usr / local / pgsql / data.

Itu /etc/init.d/postgresql-8.4harus diluncurkan oleh root (seperti yang lainnya di /etc/init.d), bukan oleh pengguna postgres.

PGDATA tidak boleh diatur secara manual, karena sekali lagi itu benar-benar menghalangi cara kerja paket-paket postgres ubuntu.

Jawaban saya adalah membersihkan dan menginstal ulang paket postgresql-8.4 tanpa mengikuti instruksi dari posting blog. postgresql-8.4-postgis tergantung pada postgresql-8.4 sehingga akan dihapus juga. Pastikan juga untuk membatalkan pengaturan PGDATA di /etc/bash.bashrc.

Daniel Vérité
sumber
Saya sedang mengulang instalasi sekarang, tetapi memperhatikan dalam jawaban Anda Anda menyarankan jalan yang salah lakukan untuk Ubuntu mencari di tempat yang salah untuk file. Mungkinkah itu karena klien menjalankan OSX sementara server adalah kotak ubuntu?
Jadi saya melakukan instal ulang dan mendapatkan kesalahan yang sama persis. Saya melihat-lihat sedikit lebih banyak dan menemukan bahwa saya tidak memiliki port terbuka di iptables. Setelah mengikuti petunjuk di sini: cyberciti.biz/tips/howto-iptables-postgresql-open-port.html saya dapat terhubung.
Saya tidak bisa mengatakan dengan pasti apakah menginstal ulang adalah bagian dari perbaikan, tetapi ini pasti membantu. Jadi saya memberi Anda kemenangan
Ketika klien dan server berada di host yang berbeda, psql harus dipanggil dengan psql -h <server> [optional other arguments]tempat <server> adalah nama host atau alamat IP (dan bukan localhost) dari server (kotak ubuntu dalam kasus ini). Dalam pertanyaan itu tidak terlihat seperti Anda memanggilnya dengan cara ini jadi saya mengasumsikan semua perintah diluncurkan di server. Pokoknya saya benar-benar yakin bahwa menginstal ulang adalah ukuran yang waras bahkan jika koneksi bisa dibuat.
Saya menyebutnya seperti: psql -U postgres -h localhost karena saya memiliki pengaturan port forward gelandangan
2

Anda mungkin menemukan buku resep saya bermanfaat. Saya baru saja mempostingnya di github. Ini mengkonfigurasi Ubuntu 12.04 LTS dengan PostgreSQL 9.1.

rogelio2k
sumber