当指定 trust
身份验证时,PostgreSQL 假设任何可以连接到服务器的人都有权使用他们指定的任何数据库用户名(即使是超级用户名称)访问数据库。当然,在 database
和 user
列中进行的限制仍然适用。只有在对连接到服务器的操作系统级别保护足够的情况下才应使用此方法。
trust
身份验证对于单用户工作站上的本地连接来说是适当且非常方便的。它通常 不 适用于多用户计算机。但是,如果你使用文件系统权限来限制对服务器 Unix 域套接字文件的访问,你甚至可以在多用户计算机上使用 trust
。为此,请按照 第 20.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)的 TCP/IP 连接之外,很少有理由对其他任何 TCP/IP 连接使用 trust
。