CREATE USER 语句(UNIX™、Linux™)

使用 CREATE USER 语句定义内部认证的用户,或将外部认证的用户映射到访问 GBase 8s 资源所需的代理用户属性。

该语句是 SQL ANSI/ISO 标准的扩展。

语法

Properties
元素 描述 限制 语法
directory 存储用户文件的目录的路径名称 必须是 255 字节或更少,并且必须符合您操作系统的规则。directory 还必须:
  • 属于映射的 user_IDsurrog_group_ID
  • 所有者具有读、写和执行权限。
用引号括起的字符串
password user 的内部认证的密码。 必须是 6 - 32 字节。 用引号括起的字符串
surrog_group 具有要映射 user 的权限的现有操作系统组(代理组)的名称。 surrog_group 值必须包含在括号中。 至多为 32 字节。

必须是 /etc/gbasedbt/allowed.surrogates 文件中指定的代理之一。

所有者名称
surrog_group_ID 要映射 user 的组标识编号。surrog_group_id 值的列表必须包含在括号中。 surrog_group_ID 不能是:
  • 具有服务器管理特权(DBSA 、DBSSO 、AAO 和 BARGROUP)的组 ID
  • 组 0 (root,有时引用为 wheelsystem
  • 与组 bin 或组 sys 相关联的组 ID
必须是 /etc/gbasedbt/allowed.surrogates 文件中指定的代理之一。
文字的数值
surrog_user 在具有要映射 user 权限的 GBase 8s 主机计算机上的现有操作系统用户账户(代理用户)的名称。 必须符合您操作系统的规则。

必须是 /etc/gbasedbt/allowed.surrogates 文件中指定的代理之一。。

所有者名称
user 您要映射到用户属性的指定用户的授权标识。 不能是 PUBLIC。 所有者名称
user_ID 要映射 user 的用户标识符号。 不能是用户 root 或用户 gbasedbt

必须是 /etc/gbasedbt/allowed.surrogates 文件中指定的代理之一。

文字的数值

用法

只有 DBSA 才能运行 CREATE USER 语句。在非 root 安装中,除非用户将 DBSA 特权委托给另一个用户,否则安装服务器的用户等价于 DBSA 。

在 CREATE USER 语句定义的用户可以连接到数据库服务器之前,USERMAPPING 配置参数必须设置成为支持映射用户的值。DBSA 可以发出 CREATE USER 语句以将用户映射到与适当级别的授权相对应的属性。

还必须在 sysusers 的 SYSUSERMAP 表中输入值,以将用户映射到适当的用户属性,以使 SQL 的映射用户已经正常工作。

CREATE USER 语句的执行可以用 CRUR 审计代码审计。

PASSWORD 子句

对于 root 特权的服务器,如果 OS 用户正在连接而还没有设置 USERMAPPING 配置参数,则尽管用户在当前数据库中存在,OS 认证仍会发生。当设置了 USERMAPPING 参数时,内部用户认证优先于 OS 认证。映射的用户都是内部或外部认证的。当创建没有密码的用户时,将创建映射的用户。当创建有密码的用户时,除非在此语句中指定了显式 PROPERTIES 子句,否则使用来在操作系统的属性创建内部认证用户。当 CREATE USER 语句包含 PASSWORD 子句和 PROPERTIES 子句时,此用户是内部认证的用户,但是它具有 PROPERTIES 子句中指定的代理属性。在这种情况中,代理用户或代理组必须在 /etc/gbasedbt/allowed.surrogates file 中列出。

PROPERTIES 子句

PROPERTIES 子句可以定义新的用户,并且可以可选地将此用户与包含组合主目录的代理属性相关联。CREATE DEFAULT USER 是 CREATE USER 语句的特例。CREATE DEFAULT USER 语句定义为缺省用户设置的属性。当定义完缺省用户属性之后,您可以通过省略 PROPERTIES 子句创建新的具有缺省用户属性的用户。 映射的用户可以使用代理用户属性连接到数据库服务器,如果它们使用可插入身份验证模块(PAM)、单点登录(SSO)或内部身份验证。属性值不适用于非 root 安装,但必须像 root 权限服务器一样指定。但是,代理用户和代理组在非 root 安装中在 allowed.surrogates 文件中是不必需的。

AUTHORIZATION 子句

AUTHORIZATION 子句授权管理特权的子集。USERMAPPING 配置参数必须设置成 ADMIN 以启用此子句。

注:

不推荐使用 AUTHORIZATION 子句(ALTER USER 的 AUTHORIZATION 子句或 GRANT ACCESS TO PROPERTIES )。此语法在更高版本中不支持角色分离。

HOME 目录子句

使用 HOME 关键字为用户文件指定目录是可选的,但在某些情况下,这是非常可取的。如果您没有指定主目录,具有同一主目录的内部认证用户将作为 GBase 8s 主机计算机上的代理用户账户。如果代理用户身份没有设置主目录,则 GBase 8s $GBASEDBTDIR/users 的用户文件创建目录。在这之后的情况中,$GBASEDBTDIR/users 目录名称采用这种格式 uid.ID_number (如,uid.101)。

ACCOUNT LOCK 和 ACCOUNT UNLOCK 关键字

使用 ACCOUNT LOCK 和 ACCOUNT UNLOCK 关键字,DBSA 可以切换禁用和启用指定用户对数据库服务器的访问。

示例

示例 1:创建映射用户

以下语句创建了名为 joe 的映射用户。

CREATE USER joe;    

如果用户 joe 是 OS 用户,则 joe 禁用与其用户名称关联的操作系统属性。

如果用户 joe 不是 OS 用户,并且已经定义了缺省用户属性,则 joe 具有缺省用户的代理属性。如果没有定义缺省语句,则会返回错误。

示例 2:创建内部认证用户:

以下示例创建了名为 joe 的内部认证用户,它的密码为 joebar

CREATE USER joe WITH PASSWORD "joebar";

如果用户 joe 不是 OS 用户,并且已经定义了缺省用户属性,则 joe 具有缺省用户的代理属性。如果没有定义缺省语句,则会返回错误。

示例 3:使用锁定的账户创建内部认证用户:

以下语句创建具有锁定的账户的名为 phil 的内部认证用户:

CREATE USER phil WITH PASSWORD "joebar" ACCOUNT LOCK;

如果用户 phil 不是 OS 用户,并且已经定义了缺省用户属性,则 phil 具有缺省用户的代理属性。如果没有定义缺省语句,则会返回错误。

示例 4:创建具有特定属性的内部认证用户:

以下语句创建具有 UID 、组和主目录的内部认证用户 mary

CREATE USER mary WITH PASSWORD "joebar" PROPERTIES UID 44567 
GROUP(1234) HOME "/home/pd/osuser";

示例 5:创建具有代理用户的映射用户:

以下语句创建具有代理用户 foo_os 的映射用户 bill

CREATE USER bill WITH PROPERTIES user "foo_os";

用户 bill 拥有用户 foo_os 的操作系统属性。

示例 6:创建缺省用户:

以下语句创建一个用户(内部命名为 PUBLIC),其中包含代理用户 tmp 的属性:

CREATE DEFAULT USER WITH PROPERTIES USER "tmp";

创建的没有代理属性的其它用户将具有这些属性。

1 该路径至多只能使用 16 次