如何配置PostgreSQL以允许TCP/IP连接?

3
我正在尝试将一个webapp推送到Heroku上,并且在让Postgres接受TCP/IP连接方面遇到了问题。我已经查阅了关于此主题的所有问题/答案,但仍然无法解决这个问题。我是数据库/ web开发的新手,非常感谢任何帮助!
在postgresql.conf中,我将侦听地址变量从localhost更改为#listen_addresses = '*'。端口看起来正确:#port = 5432。
我还将0.0.0.0添加到pg_hba.conf中(这是正确的顺序吗?)。
# TYPE   DATABASE       USER        ADDRESS          METHOD
local       all         all                           trust
host        all         all          0.0.0.0/0        md5
host        all         all        127.0.0.1/32       trust
host        all         all         ::1/128           trust

添加了该地址后,在终端中调用postgres,它运行了但出现了致命错误:

LOG:  database system was shut down at 2015-09-06 16:21:43 PDT
LOG:  MultiXact member wraparound protections are now enabled
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started
FATAL:  database "admin" does not exist

当我尝试启动psql时,出现相同的消息:
psql: FATAL:  database "admin" does not exist

我能够通过另一个数据库连接到 psql 并创建了一个新的管理员数据库。然后我创建了我需要的应用程序数据库,并通过 Gradle 运行我的项目以确保其功能正常。在此过程中,我多次完全停止了服务器以查看更改是否有效。
Heroku 日志仍显示我在更改 Postgres 配置文件之前遇到的相同问题。
Caused by: org.postgresql.util.PSQLException: Connection to
localhost:5432 refused. Check that the hostname and port are correct
and that the postmaster is accepting TCP/IP connections.

当我访问http://localhost:5432/时,页面显示“无数据接收”,并显示错误信息“由于服务器未发送任何数据,无法加载网页。”。
感谢您的帮助!
版本信息:Mac OSX 10.10.5、PostgreSQL 9.4.4、Heroku 3.41.5、Gradle 2.5、Java 1.8.0_51。所有这些都是使用Homebrew安装的。

1
有几件事需要考虑: 1)取消注释listen_addresses并指定值。 2)在进行pg_hba.conf/postgresql.conf更改后,应重新加载postgres配置,可以通过重启服务或在psql中运行pg_reload_conf()来实现。 3)您的问题中没有指示应用程序的连接属性,请尝试检查它们,可以通过运行psql -U yourAppUser -d yourDatabase -h hostnameAddressOrDNS来检查。 - Dmitry S
只是想澄清一下:您是想使用Heroku提供的数据库,还是在运行自己的数据库?如果不是Heroku,那么这个其他Postgres数据库是在哪里运行的(本地、AWS等)? - codefinger
@codefinger 你说得对 - 我试图使用自己的数据库。我将尝试使用Heroku的数据库,看看效果如何。 - the holla
1个回答

2
这句话对我来说听起来像是你正在运行自己独立的Postgres数据库,这是正确的吗?如果你正在使用Heroku,很可能这不是一个好主意。Heroku的主要优势之一是它为您处理服务器维护/恢复等问题,这是它的主要优势。考虑到这一点,我建议您使用Heroku Postgres而不是运行自己的Postgres数据库。它不仅是世界上最大的托管Postgres服务,而且已经存在了很长时间,基本上没有bug,可以让您做很多很棒的事情(即时提供读取从节点/备份主节点等),甚至还有一个慷慨的免费计划。真的没有理由不使用它=) 要开始使用Heroku Postgres,您只需简单地说:
$ heroku addons:add heroku-postgresql:dev

这将为您生成一个新的数据库,您的应用程序可以通过预定义的环境变量DATABASE_URL访问它。只需将该URL提供给您的Web框架/应用程序代码,并让它连接到该数据库--它包括用户名/密码/等等,并且应该很容易使用。
您还可以查看入门指南以获取更多信息:https://devcenter.heroku.com/articles/heroku-postgresql

1
谢谢,这非常有帮助。我会尝试一下,并在完成后回来查看。 - the holla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接