Aug*_*ger 5 authentication postgresql 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
Run Code Online (Sandbox Code Playgroud)
和:
# /etc/postgresql/9.3/main/postgresql.conf
listen_addresses = '*'
Run Code Online (Sandbox Code Playgroud)
从这篇文章来看.
但如果用户(例如appname_dev)不存在,我得到:
FATAL: role "appname_dev" does not exist
Run Code Online (Sandbox Code Playgroud)
这个帖子允许我在一行中创建用户,这很公平(sudo -u postgres createuser -d -R -P appname_dev),但我真的希望这是即插即用.
我理解端口的东西可能很棘手,但恕我直言,其余的不应该!
谢谢您的帮助!
您可以通过使用 pgbouncer(连接池)并进行以下设置来实现此目的:
* = host=127.0.0.1 user=postgres
auth_type = any
Run Code Online (Sandbox Code Playgroud)
因此,当您使用任何用户和任何密码连接到 pgbouncer 时,它将作为具有所有权限的 postgres 用户连接到 postgres。
您可能还想将 pgbouncer 端口更改为 5432(默认情况下它在 6432 端口上工作)并将 postgres 端口更改为不同的端口,以便您的应用程序无需对配置进行任何修改即可连接到 pgbouncer。