使用 CREATE USER 语句定义内部认证的用户,或将外部认证的用户映射到访问 GBase 8s 资源所需的代理用户属性。
该语句是 SQL ANSI/ISO 标准的扩展。
元素 | 描述 | 限制 | 语法 |
---|---|---|---|
directory | 存储用户文件的目录的路径名称 | 必须是 255 字节或更少,并且必须符合您操作系统的规则。directory 还必须:
|
用引号括起的字符串 |
password | user 的内部认证的密码。 | 必须是 6 - 32 字节。 | 用引号括起的字符串 |
surrog_group | 具有要映射 user 的权限的现有操作系统组(代理组)的名称。 surrog_group 值必须包含在括号中。 | 至多为 32 字节。
必须是 /etc/gbasedbt/allowed.surrogates 文件中指定的代理之一。 |
所有者名称 |
surrog_group_ID | 要映射 user 的组标识编号。surrog_group_id 值的列表必须包含在括号中。 | surrog_group_ID 不能是:
|
文字的数值 |
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 审计代码审计。
AUTHORIZATION 子句授权管理特权的子集。USERMAPPING 配置参数必须设置成 ADMIN 以启用此子句。
不推荐使用 AUTHORIZATION 子句(ALTER USER 的 AUTHORIZATION 子句或 GRANT ACCESS TO PROPERTIES )。此语法在更高版本中不支持角色分离。
使用 HOME 关键字为用户文件指定目录是可选的,但在某些情况下,这是非常可取的。如果您没有指定主目录,具有同一主目录的内部认证用户将作为 GBase 8s 主机计算机上的代理用户账户。如果代理用户身份没有设置主目录,则 GBase 8s 为$GBASEDBTDIR/users 的用户文件创建目录。在这之后的情况中,$GBASEDBTDIR/users 目录名称采用这种格式 uid.ID_number (如,uid.101)。
使用 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";
创建的没有代理属性的其它用户将具有这些属性。