2

我正在为一个 rails 项目(我正在加入)设置我的本地 postgresql 数据库,并完成了以下操作:

  • 安装的 postgres
  • 添加/捆绑“pg”宝石
  • 创建了一个名为“foobar”的数据库用户
  • 创建了一个名为“foobar_development”的数据库

rails 应用程序带有一个 rake db:migrate 任务。当我运行这个任务时,我得到以下错误输出:

FATAL:  no pg_hba.conf entry for host "::1", user "foobar", database "foobar_development", SSL off

我在以下位置找到了一个 pg_hba.conf 文件:

/usr/local/var/postgres

这是 pg_hba.conf 文件的相关部分:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.

#local   replication     jimmyli                                trust
#host    replication     jimmyli        127.0.0.1/32            trust
#host    replication     jimmyli        ::1/128                 trust

我正在使用我的 Mac 附带的 postgres(版本 9.2.4),尽管我担心我可能在其他地方安装了它的另一个版本(并且应该删除它 - 无论如何我可以检查这个?)。我也在使用 Postgres.app 来运行 psql。( http://postgresapp.com/ )。

我认为我的 pg_hba.conf 文件应该可以正常工作(因为我让所有用户都可以访问所有数据库),所以我想知道那里是否还有另一个 pg_hba.conf 文件,并且我正在查看错误的一个/一个那没有被使用。我怎样才能检验这个假设?

4

4 回答 4

9

知道了!看起来我正在查看错误/不相关的 pg_hba.conf 文件。为了找到正确的,我使用 psql 登录到数据库并运行“SHOW hba_file”

这给了我相关文件的路径,在我的例子中是:

/图书馆/PostgreSQL/9.1/数据

然后我在这个问题中添加了正确的行(见我的问题),一切正常!

于 2013-07-04T18:05:26.487 回答
4

对 pg_hba.conf 文件进行更改后,您是否重新加载了 postgresql?尝试以超级用户身份登录 db,然后select pg_reload_conf();重新加载 pg_hba.conf 和 postgresql.conf 文件。

于 2013-07-04T14:52:12.070 回答
0

pg_hba.conf 应该被复制到您的数据目录中。根据这里的列表,它应该在 ~/Library/Application\ Support/Postgres/var 中。希望有帮助...

于 2013-07-04T05:55:52.687 回答
0

在命令行中设置以下环境变量以要求 SSL 用于 Postgres 连接:

$ export PGSSLMODE=require
于 2016-02-14T04:36:59.090 回答