Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 配置postgres以在开发模式下接受任何用户/密码组合_Postgresql_Authentication_Development Environment - Fatal编程技术网

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

Postgresql 配置postgres以在开发模式下接受任何用户/密码组合,postgresql,authentication,development-environment,Postgresql,Authentication,Development Environment,作为一名自由职业者,我不断地接触新的项目 我发现postgresql配置在仅用于开发模式时非常复杂(我完全理解生产需求有很大不同) 我想要实现的是配置我的postgres,这样无论使用什么用户名/密码/端口/连接模式,它都拥有DB上的所有权限(因为这里的安全性无关紧要)。使用Rails时,所有配置都在config/database.yml中,我不想更改文件本身的任何内容 我实现了对每个连接(本地和TCP)进行无密码身份验证,但这样做: # /etc/postgresql/9.3/main/pg_

作为一名自由职业者,我不断地接触新的项目

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

我想要实现的是配置我的postgres,这样无论使用什么用户名/密码/端口/连接模式,它都拥有DB上的所有权限(因为这里的安全性无关紧要)。使用Rails时,所有配置都在
config/database.yml
中,我不想更改文件本身的任何内容

我实现了对每个连接(本地和TCP)进行无密码身份验证,但这样做:

# /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
以及:

从现在开始

但是如果用户(例如,
appname\u dev
)不存在,我会得到:

FATAL:  role "appname_dev" does not exist
这允许我在一行中创建用户,这很公平(
sudo-u postgres createuser-d-R-p appname\u dev
),但我真的希望这是即插即用的

  • 我怎样才能做到这一点
  • 在postgres上没有任何开发安装模式,默认情况下,凭证的配置比当前的要轻得多吗
  • 我是否错过了一些使这不成问题的最佳实践
我知道港口的事情可能会很棘手,但依我看,其他的不应该


谢谢你的帮助

您可以通过使用带有以下设置的pgbouncer(连接池器)来实现这一点:

* = host=127.0.0.1 user=postgres
auth_type = any
因此,当您使用任何用户和密码连接到pgbouncer时,它将以拥有所有权限的postgres用户身份连接到postgres


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

这似乎是您想要的,但它在SQL级别与postgres不完全兼容。SQLite确实符合我的大多数要求。但我想要的是一个开箱即用的数据库,不需要编辑任何配置文件,这意味着Postgres+用户名+密码的选择已经完成,不是我自己做的。你只能连接数据库中确实存在的用户。这是没有办法的。在您的开发环境中是否有一些“引导”模式设置代码?您可以在那里包含必要的
create user
脚本,因为每个人都可以作为超级用户连接,所以每个人都可以运行引导代码。听起来是一个有趣的解决方案,我将看看它!我浏览了源代码,改变行为的唯一方法是修补
InitializeSessionUserId
,如果不存在,则在那里添加一个新Id,或者替换一个完全不同的Id。这就引出了一个问题,为什么不先使用现有用户呢?
* = host=127.0.0.1 user=postgres
auth_type = any