PostgreSQL 多种认证方式

标签 postgresql authentication postgresql-9.1

如何为同一主机/数据库/用户规则设置多种身份验证方法?我希望能够使用 sudo -u postgres psql -U postgres(无需输入 PostgreSQL 密码)和 psql -U postgres --password< 登录我的 postgres 用户。 pg_hba.conf 中的内容类似于以下内容:

local   all             postgres                        md5
local   all             postgres                        peer

我只能同时使用一种或另一种方法。

谢谢。

(我正在使用 PostgreSQL 9.1)。

最佳答案

没有。任何给定配置仅支持一种身份验证方法。

如果 Pg 可以支持回退身份验证,我会很高兴,如果身份检查失败,它会允许 md5 身份验证。不过,它目前不支持此功能,而且我怀疑(我尚未验证)需要更改协议(protocol)才能支持它。

可以做的是将密码存储在$HOME/.pgpass 文件中,供postgres 系统用户使用。给它模式 0600,这样它只能被 postgres 用户和 root 读取,无论如何他们都可以直接访问数据库文件和配置。这样您就可以轻松获得管理 md5 身份验证。在某些系统上,您可能必须先为 postgres 用户设置和创建主目录,然后才能执行此操作。查看 getent passwd postgres 查看 postgres 用户是否有 homedir,如果有,它在哪里。

(更新:用于读取$HOME/.psqlrc - 这很有用,但.pgpass适用于密码存储)

关于PostgreSQL 多种认证方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11442915/

相关文章:

postgresql - Postgres INSERT ON CONFLICT DO NOTHING 与 SELECT + INSERT 查询

java - 属于动态组的数据库良好实践 : how to make users,

java - 基于证书的身份验证

java - HttpClient 设置 Kerberos 身份验证的凭据

postgresql - 从连接日期和时间列中获取时间戳

json - 在 PostgreSQL 中基于 JSON 文件创建表

postgresql - 是否安装了 PostGIS 2?

ruby-on-rails - 自 postgresql/rails 中某个日期以来的平均天数

python - SQLAlchemy 同时进行一对一和一对多(AmbigouslyForeignKeysError)

sql - 触发引发 : "ERROR: stack depth limit exceeded"