無法連接到 Vagrant Box 上的 Postgres - 連接被拒絕?
首先,我是 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 使用者啟動。PGDATA 不應該手動設置,因為它確實妨礙了 ubuntu postgres 包的工作方式。
我的回答是清除並重新安裝 postgresql-8.4 軟體包,而不遵循部落格文章中的任何說明。postgresql-8.4-postgis 依賴於 postgresql-8.4,所以它也會被刪除。還要確保撤消 /etc/bash.bashrc 中的 PGDATA 設置。