PG数据库下的用户指用来访问、管理数据库中的对象,角色用于管理数据库访问权限,简化权限的管理,同时也兼任用户功能。
用户和角色的概念非常接近,如果给角色分配了可登录的权限,角色也可以与用户一样登录并创建对象。因此,在PG数据库下,用户和角色可以等同看待。
用户和角色在整个数据库中是全局的,登录到某数据库时,创建的用户不只针对数据库里的用户,而是针对整个集群的数据库。
数据库中的用户可以分为两类:
• 超级用户:安装完PolarDB以后,默认的用户即超级用户postgres,拥有所有权限。
• 普通用户:根据需要创建。
另外,group指不拥有replication/noreplication、connection limit属性的角色。
创建用户有两种模式:
• 方式一为在操作系统下创建数据库的用户,不需要登录到数据库。
• 方式二为登录到数据库进行创建。方式一的后台处理时也需要登录到数据库进行操作,只是登录操作由后台负责,为使用者简化了流程。
如果在数据库里创建用户,创建时即可为其分配不同的权限,比如特指定是否为超级管理员、是否有创建数据库的权限、是否有创建角色的权限、是否有创建用户的权限、用户能否继承所拥有的权限等。此类权限为特殊权限,无法使用grant进行授权。
上图为创建用户示例。
需要注意,Login、Superuser和Createrole三个权限无法被继承。
创建角色的语法与创建用户的语法基本一致。
角色和用户最大的区别在于,角色默认没有login的权限,如果有了login的权限,则角色等同于用户。
上图为创建角色示例。我们通常用角色对权限进行间接的授权。
创建完用户和角色以后,可以用\du指令显示用户和角色的属性。
“角色名称”一列下包含了用户和角色,此处对用户和角色进行了统一对待,同时展示了属性以及属于哪个角色或权限。
除了\du以外,也可以通过数据字典访问用户/角色信息,比如通过pg_user或pg_rules。查询结果显示为上图形式。
如果要修改用户的属性,比如权限、名字或密码,可以用\h alter user命令。
上图为修改用户属性示例。
接下篇:https://developer.aliyun.com/article/1223095?groupCode=polardbforpg