PostgreSQLmanages database access permissions using the concept ofroles. A role can be thought of as either a database user, or a group of database users, depending on how the role is set up. Roles can own database objects (for example, tables and functions) and can assign privileges on those objects to other roles to control who has access to which objects. Furthermore, it is possible to grant_membership_in a role to another role, thus allowing the member role to use privileges assigned to another role.
The concept of roles subsumes the concepts of“users”and“groups”. InPostgreSQLversions before 8.1, users and groups were distinct kinds of entities, but now there are only roles. Any role can act as a user, a group, or both.
This chapter describes how to create and manage roles. More information about the effects of role privileges on various database objects can be found inSection 5.6.