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


10

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

我使用http://files.vagrantup.com/lucid32.box创建了Vagrant实例,没有任何麻烦。我能够运行vagrant upvagrant ssh没有问题。

我按照说明进行了一个较小的更改,我安装了“ postgresql-8.4-postgis”软件包,而不是“ postgresql postgresql-contrib”。

我使用以下命令启动服务器:

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

在连接到无所事事的实例时,我可以用来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.

Answers:


5

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


我现在正在重做安装,但是在您的回答中注意到您建议路径错误,这是因为Ubuntu在错误的位置查找文件。难道是由于服务器是Ubuntu盒子时客户端在OSX上运行?

所以我做了重新安装,并得到完全相同的错误。我四处张望,发现我没有在iptables中打开端口。在按照以下说明操作后:cyberciti.biz/tips/howto-iptables-postgresql-open-port.html 我可以连接。

我不能确定重新安装是否是修复程序的一部分,但这绝对有帮助。所以我给你胜利

当客户端和服务器位于不同的主机上时,必须通过以下方式调用psql:psql -h <server> [optional other arguments]<server>是服务器的主机名或IP地址(在本例中为ubuntu框)。在问题中,它看起来不像您这样调用,因此我假设所有命令都已在服务器上启动。无论如何,我真的很肯定即使可以建立连接,重新安装也是明智的选择。

我这样称呼它:psql -U postgres -h localhost,因为我有无用的端口转发设置

2

您可能会发现我的食谱有用。我刚刚将其发布在github上。它使用PostgreSQL 9.1配置Ubuntu 12.04 LTS。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.