5.1.?数据库角色

数据库角色从概念上与操作系统用户是完全无关的。在实际使用中把它们对应起来可能比较方便,但这不是必须的。数据库角色在整个数据库集群中是全局的(而不是独立数据库内)。要创建一个角色,可使用CREATE ROLE:

CREATE ROLE name;

name遵循SQL标识符的规则:要么完全没有特殊字符,要么用双引号包围(实际上通常会给命令增加额外的选项,例如LOGIN。更多细节可见下文)。要移除一个已有的角色,使用DROP ROLE命令:

DROP ROLE name;

为了方便,createuser和dropuser程序被提供作为这些SQL命令的封装,可以从shell命令行调用:

createuser name
dropuser name

要检查现有角色的集合,检查ux_roles系统表,例如:

SELECT rolname FROM ux_roles;

uxsql程序的\du元命令也可以用来列出现有角色。

为了引导数据库系统,一个刚刚被初始化好的系统总是包含一个预定义角色。这个角色总是一个superuser,并且默认情况下(除非在运行initdb时修改)它的名称和初始化数据库集群的操作系统用户名相同。习惯上,这个角色将被命名为uxdb。为了创建更多角色,你首先必须以初始角色的身份连接。

每一个和数据库的连接都必须用一个角色身份进行,这个角色决定在该连接上的初始权限。要使用一个特定数据库连接的角色名由客户端指示,该客户端以一种应用相关的风格发起连接请求。例如,uxsql程序使用-U命令行选项来指定要以哪个角色连接。很多应用以当前操作系统的用户名为默认角色名(包括createuseruxsql)。因此在角色和操作系统用户之间维护一个名称对应关系通常是很方便的。

一个给定客户端连接能够用来连接的数据库角色的集合由该客户端的认证设置决定,这些在第?4?章中有解释(因此,一个客户端不止限于以匹配其操作系统用户的角色连接,就像一个人的登录名不需要匹配其真实名称一样)。因为角色身份决定一个已连接客户端可用的权限集合,在设置一个多用户环境时要小心地配置权限。

XML 地图 | Sitemap 地图