无法连接到 Vagrant Box 上的 Postgres-连接被拒绝?

无法连接到 Vagrant Box 上的 Postgres-连接被拒绝?

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

我使用创建了我的 Vagrant 实例http://files.vagrantup.com/lucid32.box没有任何麻烦。我可以毫无问题地 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.

答案1

您提到的博客文章中的说明对于 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 的设置。

答案2

你可能会发现我的食谱有用。我刚刚把它发布在 github 上。它配置了 Ubuntu 12.04 LTS 和 PostgreSQL 9.1。

相关内容