Postgresql

無法連接到 Vagrant Box 上的 Postgres - 連接被拒絕?

  • May 30, 2014

首先,我是 Vagrant 和 Postgres 的新手。

我使用http://files.vagrantup.com/lucid32.box創建了我的 Vagrant 實例,沒有任何問題。我能夠毫無問題 vagrant up地執行。vagrant ssh

我按照說明做了一個小改動,我安裝了“postgresql-8.4-postgis”包而不是“postgresql postgresql-contrib”。

我使用以下方式啟動伺服器:

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.

您提到的部落格文章中的說明對於 ubuntu 根本不正確:它們使用了自編譯伺服器安裝中的部分,這些部分與打包版本不能很好地混合。

不應創建 /usr/local/pgsql/data 並將 initdb 執行到該目錄,因為 ubuntu 包代表使用者使用/var/lib/postgresql/<pg-version-number>/<cluster-name>和執行。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應該由 root 啟動(與 /etc/init.d 中的所有其他內容一樣),而不是由 postgres 使用者啟動。

PGD​​ATA 不應該手動設置,因為它確實妨礙了 ubuntu postgres 包的工作方式。

我的回答是清除並重新安裝 postgresql-8.4 軟體包,而不遵循部落格文章中的任何說明。postgresql-8.4-postgis 依賴於 postgresql-8.4,所以它也會被刪除。還要確保撤消 /etc/bash.bashrc 中的 PGDATA 設置。

引用自:https://serverfault.com/questions/373984