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

时间:2015-09-07 01:05:47

标签: java macos postgresql heroku tcp

我正在尝试将Web应用程序推送到Heroku,并且无法让Postgres接受TCP / IP连接。我已经完成了关于这个主题的所有问题/答案,但仍然无法解决这个问题。我是数据库/网站开发的新手,非常感谢任何帮助!

在postgresql.conf中,我将listen地址变量从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连接到psql -d template1并创建了一个新的管理数据库。然后我创建了我的应用程序所需的数据库,并通过使用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 个答案:

答案 0 :(得分:2)

听起来像你在运行自己独立的Postgres数据库 - 这是正确的吗?如果你正在使用Heroku,可能性是 - 这不是一个好主意。

Heroku的主要好处之一是它可以为您处理服务器维护/恢复/等等 - 这是它的主要好处是=)

考虑到上述情况,我建议您使用Heroku Postgres而不是运行自己的Postgres数据库。它不仅是世界上最大的托管Postgres服务 - 它一直在永远,基本上没有bug,允许你做很多很棒的东西(立即提供读取奴隶/备份主人/等等) ),甚至都有一个慷慨的免费计划

没有理由不使用它=)

要了解Heroku Postgres,您可以简单地说:

var backView = self.makeGrayView()
self.view.addSubview(backView)

这将为您生成一个新数据库,您的应用可以通过名为$ heroku addons:add heroku-postgresql:dev 的预定义环境变量访问该数据库。只需将该URL提供给您的Web框架/应用程序代码,并将其连接到它 - 它包含用户名/密码/等,并且应该可以轻松工作。

您可能还需要查看入门指南以获取更多信息:https://devcenter.heroku.com/articles/heroku-postgresql