在 PostgreSQL 中允许同一个用户使用两种登录方式

在 PostgreSQL 中允许同一个用户使用两种登录方式

我在远程 Debian Squeeze 服务器上运行着一个 PostgreSQL 服务器。我想用用户登录PostgreSQL 的使用身份md5方法。前者是维护 Debian 所必需的。后者用于通过 ssh 端口转发连接我的本地 postgresql 客户端。

我的第一个方法是使用用户 postgress 添加行,如下所示:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         postgres                          ident
local   all         postgres                          md5

这显然不起作用,官方文档解释道:

第一个具有匹配的连接类型、客户端地址、请求的数据库和用户名的记录用于执行身份验证。没有“失败”或“备份”:如果选择了一条记录并且身份验证失败,则不会考虑后续记录。如果没有匹配的记录,则拒绝访问。

因为前三列相同,所以 postgresql 只会选择它遇到的第一列。

我的解决方法是创建第二个名为 root 的超级用户

CREATE ROLE root LOGIN SUPERUSER CREATEROLE CREATEDB PASSWORD 'newpassword';

并将以下内容放入 pg_hba.conf:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         postgres                          ident
local   all         root                              md5

有没有更好的解决方案,无需创建第二个用户?

答案1

由于您是通过端口转发进行连接的,因此您的连接无论如何都将是host连接类型,并且应按此进行配置。我假设此连接来自,127.0.0.1/32因此您需要配置

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         postgres                          ident
host    all         postgres    127.0.0.1/32          md5

相关内容