【发布时间】:2022-09-30 20:38:04
【问题描述】:
我的集群配置为在本地连接上使用对等身份验证,即described,如下所示:
对等身份验证方法通过获取客户端的 来自内核的操作系统用户名并将其用作允许的 数据库用户名(带有可选的用户名映射)。
因此,如果我尝试连接到未以用户身份登录的数据库集群,其名称在数据库角色之间具有对应关系,我将收到预期的错误:
john@john:~$ psql -d postgres psql: error: FATAL: role \"john\" does not exist另一方面,有
psql\'s-U username选项,enables 我们以用户用户名而不是默认用户名连接到数据库。 (当然,您必须获得许可才能这样做。)
但是当我用这个选项重复我之前的步骤时,我得到的错误有点不同(那里是有名字的角色postgres)
john@john:~$ psql -d postgres -U postgres psql: error: FATAL: Peer authentication failed for user \"postgres\"我的问题是关于对等身份验证和
-U选项如何协同工作。似乎如果我使用后者,服务器不再对我的客户端的操作系统用户名感兴趣(在相反的情况下,我会看到第一个错误)。但是在什么基础上我又不允许连接数据库呢?可能是由于对等身份验证,它不仅仅是将 OS/
-U用户名与 PostgreSQL 角色匹配,而且还完全限制了某些操作系统用户访问数据库(因此,操作系统用户john可以\即使通过提供 PostgreSQL 服务器实际知道的名称也无法获得它 -postgres)我做对了吗?
标签: postgresql