当指定 trust
身份验证时,PostgreSQL 会假定任何可以连接到服务器的人都被授权访问带有他们指定的用户名的数据库(即使是超级用户)。当然,在 database
和 user
列中进行的限制依然适用。该方法仅应在对连接到服务器的操作系统级别有充分保护时使用。
trust
身份验证适用于单用户工作站上的本地连接,并且非常方便。通常对于多用户机器它不适用。但是,如果你使用文件系统权限限制对服务器的 Unix 域套接字文件的访问,即使在多用户机器上,你也可以使用 trust
。若要执行此操作,请按照中 第 19.3 节 中所述设置 unix_socket_permissions
(和可能的 unix_socket_group
)配置参数。或者,你可以设置 unix_socket_directories
配置参数,以便将套接字文件放置在适当受限的目录中。
设置文件系统权限仅有助于 Unix 套接字连接。本地 TCP/IP 连接不受文件系统权限的限制。因此,如果你想对本地安全性使用文件系统权限,请从 pg_hba.conf
中删除 host ... 127.0.0.1 ...
行,或将它更改为非 trust
身份验证方法。
trust
身份验证仅适用于 TCP/IP 连接,前提是你信任服务器允许连接的每台机器上的每个用户,这些机器由指定 trust
的 pg_hba.conf
行。除了来自:localhost (127.0.0.1) 的连接之外,使用 trust
对于其他任何 TCP/IP 连接而言是不合理的。