Vagrant Box'ta Postgres'e bağlanılamıyor - Bağlantı reddedildi mi?


10

Öncelikle Vagrant ve Postgres için yeniyim.

Vagrant örneğimi sorunsuz bir şekilde http://files.vagrantup.com/lucid32.box kullanarak oluşturdum . Ben çalıştırmak mümkün duyuyorum vagrant upve vagrant sshsorun olmadan.

Ben takip talimatları tek minör değişiklik ile, yerine "postgresql postgresql-contrib" nin "postgresql-8.4-PostGIS" paketini yüklü.

Sunucuyu kullanarak başlattım:

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

Vagrant örneğine bağlıyken psql, örneğe sorunsuz bir şekilde bağlanmak için kullanabilirsiniz .

Vagrantfile'ımda zaten ekledim:

config.vm.forward_port 5432, 5432

ama ben localhost psql çalıştırmaya çalıştığınızda olsun:

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

Eminim basit bir şey eksik. Herhangi bir fikir?

Güncelleme:

Ben böyle bir soruna bir referans buldum ve makale kullanarak önerdi:

psql -U postgres -h localhost

bununla ben:

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

Yanıtlar:


5

Bahsettiğiniz blog gönderisindeki talimatlar ubuntu için hiç doğru değil: paketlenmiş bir sürümle iyi karışmayan kendinden derlenmiş bir sunucunun kurulumundan parçalar kullanıyorlar.

Biri / usr / local / pgsql / data oluşturmamalı ve initdb'yi bu dizine çalıştırmamalıdır, çünkü ubuntu paketi kullanıcı adına kullanır /var/lib/postgresql/<pg-version-number>/<cluster-name>ve çalışır initdb.

"/Tmp/.s.PGSQL.5432" ifadesi hatası, bu dosya için beklenen konumun hatalı olduğunu gösterir (ubuntu için). İçinde olmalı /var/run/postgresql. Muhtemelen initdb'yi ubuntu ile uyumsuz parametrelerle manuel olarak çalıştırmaktan kaynaklanmaktadır.

Yerel olmayan bağlantıları etkinleştirmek için düzenlenecek postgresql.conf ve pg_hba.conf dosyaları /etc/postgresql/8.4/main/ usr / local / pgsql / data içinde olmamalıdır .

/etc/init.d/postgresql-8.4Değil postgres kullanıcı tarafından, root tarafından (/etc/init.d her şey gibi) başlatılmalıdır.

PGDATA manuel olarak ayarlanmamalıdır, çünkü yine ubuntu postgres paketlerinin nasıl çalıştığını gerçekten engeller.

Benim cevabım postgresql-8.4 paketini blog gönderisindeki talimatları izlemeden temizlemek ve yeniden kurmak olacaktır. postgresql-8.4-postgis postgresql-8.4'e bağlıdır, bu yüzden de kaldırılacaktır. Ayrıca /etc/bash.bashrc içindeki PGDATA ayarını geri aldığınızdan emin olun.


Şimdi yüklemeyi tekrar yapıyorum, ancak cevabınızda dosya için yanlış bir yer arayan Ubuntu'ya yolun yanlış olduğunu önerdiğinizi fark ettiniz. Bunun nedeni, sunucu bir ubuntu kutusuyken OSX üzerinde çalışan istemciden kaynaklanıyor olabilir mi?

Bu yüzden yeniden yükleme yaptım ve aynı hatayı aldım. Biraz daha etrafa baktım ve iptables'da açık portlarım olmadığını gördüm. Buradaki talimatları uyguladıktan sonra: cyberciti.biz/tips/howto-iptables-postgresql-open-port.html Bağlantı kurabiliyorum.

Yeniden yükleme düzeltmenin bir parçası olup olmadığını kesin olarak söyleyemeyiz, ama bu kesinlikle yardımcı oldu. Sana galibiyet veriyorum

İstemci ve sunucular farklı ana bilgisayarlarda olduğunda, psql'nin psql -h <server> [optional other arguments]<server> sunucunun ana bilgisayar adı veya IP adresi (ve localhost değil) (bu durumda ubuntu kutusu) tarafından çağrılması gerekir . Soruda bu şekilde çağırıyor gibi görünmüyor, bu yüzden sunucuda tüm komutların başlatıldığını varsayıyordum. Her neyse, bağlantı kurulmuş olsa bile, yeniden yüklemenin aklı başında bir önlem olduğu konusunda gerçekten olumluyum.

Ben şöyle çağırıyorum: psql -U postgres -h localhost i vagrant port yönlendirme kurulum var çünkü

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.