当客户端与数据库服务器连接时,它将声明以哪个 PostgreSQL 数据库用户身份进行连接,就像我们登录一台 Unix 计算机一样。在 SQL 环境里,活动的数据库用户名决定数据库对象的各种访问权限(参阅章18)。因此,实际上我们要限制的是用户可以连接的数据库。
【注意】如章18里解释的那样,PostgreSQL 实际上用"角色"的概念管理权限。在本章里,我们用数据库用户表示"带有 LOGIN 权限的角色"。
认证是数据库服务器识别客户端的过程。它通过一些手段判断是否允许此客户端(或者运行这个客户端的用户)与它所声明的数据库用户名进行邦定。
PostgreSQL 提供多种不同的客户端认证方式。可以基于(客户端)的主机地址、数据库、用户选择认证方法。
PostgreSQL 数据库用户名在逻辑上是和服务器运行的操作系统用户名相互独立的。如果某个服务器的所有用户在那台服务器机器上也有帐号,那么给数据库用户赋与操作系统用户名是有意义的。不过,一个接收远程访问的服务器很有可能有许多没有本地操作系统帐号的用户,因而在这种情况下数据库用户和操作系统用户名之间不必有任何联系。