PostgreSQL 使用角色(roles)的概念来统一管理数据库的访问控制权限。根据具体配置方式,一个角色既可以代表一个单独的数据库用户,也可以代表一组数据库用户组成的群组。角色可以拥有数据库对象(例如表、函数、视图等),并可以将这些对象上的操作权限授予其他角色,以精确管控谁能访问哪些资源。此外,还可以将一个角色的成员关系(membership)授予另一个角色,从而允许成员角色继承和使用该群组角色的全部权限。
角色的概念完整统摄了传统意义上的“用户”与“组”。在 PostgreSQL 8.1 之前的版本中,用户与组属于两类截然不同的物理实体;而现代版本中则只有统一的角色实体。任何角色均可作为用户登录、充当用户组,或者二者兼具。
本章系统介绍如何创建与管理角色。关于角色权限作用于各类具体数据库对象的详细规则,请参阅 Section 5.8。