一个数据库角色可以有一些属性,它们定义角色的权限并且与客户端认证系统交互。
1、login privilege
只有具有 LOGIN 或 ACCOUNT UNLOCK 属性的角色才能被用于一个数据库连接的初始角色名称。一个带有 LOGIN 或 ACCOUNT UNLOCK 属性的角色可以被认为和一个“数据库用户”相同。要创建一个带有登录权限的角色,使用三者之一:CREATE ROLE name LOGIN; CREATE USER name; CREATE USER name ACCOUNT UNLOCK;(CREATE USER 和 CREATE ROLE等效,除了CREATE USER默认假定有 LOGIN,而 CREATE ROLE 不这样认为)。
2、superuser status
一个数据库超级用户会绕开所有权限检查,除了登入的权限。这是一个危险的权限并且应该小心使用,最好用一个不是超级用户的角色来完成你的大部分工作。要创建一个新数据库超级用户,使用 CREATE ROLE name SUPERUSER。你必须作为一个超级用户 来完成这些。
3、database creation
一个角色必须被显式给予权限才能创建数据库(除了超级用户,因为它们会绕开所有权限检查)。要创建这样一个角色,使用 CREATE ROLE name CREATEDB。
4、role creation
一个角色必须被显式给予权限才能创建更多角色(除了超级用户,因为它们会绕开所有权限检查)。要创建这样一个角色,使用 CREATE ROLE name CREATEROLE。一个带有 CREATEROLE权限的角色也可以修改和删除其他角色,还可以授予或回收角色中的成员关系。然而,要创建、修改、删除或修改一个超级用户角色的成员关系,需要以超级用户的身份操作。CREATEROLE 不足以完成这一切。
5、initiating replication
一个角色必须被显式给予权限才能发起流复制(除了超级用户,因为它们会绕开所有权限检查)。一个被用于流复制的角色必须也具有 LOGIN 权限。要创建这样一个角色,使用 CREATE ROLE name REPLICATION LOGIN。
6、password
只有当客户端认证方法要求用户在连接数据库时提供一个口令时,一个口令才有意义。 password 和 md5 认证方法使用口令。数据库口令与操作系统命令独立。在角色创建时指定一个口令:CREATE ROLE name PASSWORD “string“。