配置postgres以在开发模式下接受任何用户/密码组合

时间:2015-02-03 11:22:47

标签: postgresql authentication development-environment

做自由职业者,我继续开始新的项目。

我发现postgresql配置仅在开发模式下使用时非常复杂(我完全理解生产要求有很大不同)。

我想要实现的是配置我的postgres,以便使用任何用户名/密码/端口/连接模式,它拥有数据库的所有权限(因为安全性无论如何)。使用Rails,所有配置都在config/database.yml中,我不想从文件本身更改任何内容。

我为每个连接(本地和TCP)实现了任何password_less身份验证,但这样做:

# /etc/postgresql/9.3/main/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             all                                     trust
host    all             all             0.0.0.0/0               trust

# /etc/postgresql/9.3/main/postgresql.conf
listen_addresses = '*'

从此Post开始。

但如果用户(例如appname_dev)不存在,我会得到:

FATAL:  role "appname_dev" does not exist

这个Post允许我在一行中创建用户,这是公平的(sudo -u postgres createuser -d -R -P appname_dev),但我真的希望这是即插即用。

  • 我怎样才能实现这一目标?
  • 在postgres上是不是有任何开发安装模式,默认情况下,凭据配置比当前更轻?
  • 我错过了一些让这不成问题的最佳做法吗?

我理解端口的东西可能很棘手,但恕我直言,其余的不应该!

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以通过以下设置使用pgbouncer(连接池)来实现此目的:

* = host=127.0.0.1 user=postgres
auth_type = any

因此,当您使用任何用户和任何密码连接到pgbouncer时,它将作为具有所有权限的postgres用户连接到postgres。

您可能还想将pgbouncer端口更改为5432(默认情况下它适用于6432端口)并将postgres端口更改为不同的端口,以便您的应用程序连接到pgbouncer而无需在配置中进行任何修改。