返回首页

gbase数据、南大通用产品文档:GBase8a导出表头区分大小写

更新日期:2024年09月11日

示例
set _gcluster_support_outfile_with_table_head_case_sensitive=1;
默认值为0,功能关闭,导出表头均转为小写;设置值为1,功能开启,导出
表头信息区分大小写
gbase> select * from tb;
+------+------+------+
| A
| b
| D
|
+------+------+------+
|
1 | aaa
| AAA
|
+------+------+------+
1.
select 不指定列名,导出的表头信息与原始数据表中列名大小写一致
rmt:select * from tb into outfile ‘path’ with head;
A
b
D
1
aaa
AAA
2. select 指定列名,导出的表头信息大小写与导出sql 中写法一致
rmt:select a,B,d from tb into outfile ‘path’ with head;
a
B
d
1
aaa
AAA
3. select 语句使用as 给列指定别名,导出的表头信息大小写与as 设置的别名
一致
rmt:select a as BIG_A,b as BIG_B,d as BIG_D from tb into outfile ‘path’
with head;
BIG_A
BIG_B
BIG_D
1
aaa
AAA

使用 GRANT 语句来给用户和其他角色指定访问权限和角色。拥有 DBSECADM
角色的用户可使用此语句来从基于标签的访问控制(LBAC)安全规则指定用户安
全标签和豁免。
语法

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 657

TO 选项

元素
描述
限制
语法
grantor 用户的授权标识符,该用户可使
用 REVOKE 来取消此 GRANT 语
句的作用。如果省略 AS 子句,
则缺省值是发出此语句的用户的
登录名
必须为有效的 user
名称(非 role 名
称)。在 Windows™
上,user 名称不可超
过 20 字节。在其他
平台上,该限制为 32
字节。
所有者名


GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 658
元素
描述
限制
语法
role
现有角色的名称,您将一个或多
个访问权限授予该角色,或您指
定另一角色给该角色
在该数据库中必须存

所有者名

user
用户的授权标识符,您将一个或
多个访问权限授予该用户,或您
将指定角色给该用户
同 grantor
所有者名

用法
GRANT 语句扩展到其他用户特定的自主访问权限或 LBAC 标签和豁免,这些通
常仅归于 DBA 或对象的创建者。后续的 GRANT 语句不影响已授予用户的那些
权限。
您可使用 GRANT 语句进行如下操作:

授权其他人来使用或管理您创建的数据库

允许其他人来查看、改变或删除您创建的表、同义词、视图或序列对象

允许其他人来使用数据类型或 SPL 语言,或来执行您创建的用户定义的
例程(UDR)

将角色及其权限分配给用户、给 PUBLIC,或给其他角色

将缺省角色分配给一个或多个用户或给 PUBLIC

如果您具有 DBSECADM 角色,则从 LBAC 安全策略的规则将 LBAC
安全标签或豁免分配给用户,
您可将权限授予先前创建的角色或授予内嵌角色。您可将角色授予 PUBLIC、授
予个别用户,或授予另一角色。
如果您用引号括起 grantor、 role 或 user,则名称是区分大小写的,并完全按您
输入的形式存储。在符合 ANSI 的数据库中,如果您不使用引号做定界符,则以
大写字母存储该名称。
仅在 Windows 上,数据库服务器不支持包含多于 20 字符的 user 名称。
您授予的权限保持有效直到您以 REVOKE 语句取消为止。仅权限的 grantor 可
调用那个权限。grantor 是发出 GRANT 语句的人,除非 AS grantor 子句将调用
那些权限的权利转给其他用户。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 659
仅对象的所有者或以 WITH GRANT OPTION 关键字明确地授予权限的用户可授
予对象的权限。有 DBA 权限还不够。然而,作为 DBA,您可通过使用 AS
grantor 子句代表另一用户授予权限。对于数据库对象的权限,其所有者不是操作
系统识别的用户(例如,用户 gbasedbt),AS grantor 子句是有用的。
关键字 PUBLIC 将特定的的权限或角色扩展到 PUBLIC 组或连接到该数据库的
所有用户。如果您想要将 PUBLIC 已持有的权限仅限制到用户的子集,则必须首
先从 PUBLIC 取消那些权限。
要为已由表达式分段的表的一个或多个分段授予权限,请参阅 GRANT
FRAGMENT 语句。
数据库级权限
数据库级访问权限影响对数据库的访问。仅个别用户,而不是角色,可持有数据
库权限。
数据库级权限

当您以 CREATE DATABASE 语句创建数据库时,您是所有者并自动地收到所有
数据库级权限。
数据库对所有其他用户保持为不可访问,直到您,作为 DBA,将数据库权限授予
他们。
作为数据库所有者,您还自动地收到对该数据库中所有表的表级权限。要获取关
于表级权限的更过信息,请参阅 表级权限。
建议: 仅用户 gbasedbt 可直接地修改系统目录表。然而,除了在数据库服务器
文档中特别说明的之外,请勿直接地使用 DML 语句来插入、删除或更新系统目录
表的行,因为修改这些表中的数据可损坏数据库的完整性。
当数据库级权限与表级权限冲突时,限制性更大的特权优先。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 660
从最低至最高,数据库访问级别为 Connect、Resource 和 DBA。请使用相应的关
键字来授予访问权限的级别。
权限
作用
CONNECT
让您查询和修改数据
您可修改数据库模式,如果您拥有想要修改的数据库对
象。任何有 Connect 权限的用户都可执行下列操作:

以 CONNECT 语句或另一连接语句连接到该数据库

执行SELECT、INSERT、UPDATE 和 DELETE 语
句,如果用户有必要的表级权限

创建视图,如果用户有对底层表的 Select 权限

创建同义词

创建临时表及创建临时表上的索引

改变或删除表或索引,如果用户拥有该表或索引(或有
该表上的 Alter、Index 或 References 权限)

授予表或视图的权限,如果该用户拥有该表(或已经由
WITH GRANT OPTION 关键字被授予对表的权限)
RESOURCE
让您扩展数据库的结构。除了 Connect 权限的能力之外,
Resource 权限的持有者可执行下列功能:

创建新标

创建新索引

创建新 UDR

创建新数据类型
DBA
有 Resource 权限的所有能力,且可执行下列附加的操作:

将任何数据库级权限授予另一用户,包括 DBA 权限

将任何表级权限授予另一用户或角色

将角色授予用户或授予另一角色

取消权限,您在 REVOKE 语句的 AS 子句中将其
grantor 指定为 revoker

当注册 UDR 时,限制 DBA 的 Execute 权限

执行 SET SESSION AUTHORIZATION 语句

创建任何数据库对象

创建表、视图和索引,指定另一用户为这些对象的所有


改变、删除或重命名数据库对象,不管谁拥有它们

执行 UPDATE STATISTICS 语句的 DROP
DISTRIBUTIONS 选项

执行 DROP DATABASE 和 RENAME DATABASE 语


GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 661
用户 gbasedbt 有改变系统目录表所需的权限,包括 systables 表。
下列示例使用 PUBLIC 关键字来将当前活动的数据库的 Connect 权限授予任何用
户:
GRANT CONNECT TO PUBLIC;
您不可将数据库级权限授予一个角色。仅个别的用户或 PUBLIC 可持有数据库级
权限。
表级权限
当您以 CREATE TABLE 语句创建表时,您是该表的所有者,且自动地收到所有
的表级权限。您不可将所有权转给另一用户,但您可将表级权限授予另一用户或
授予一角色。(然而, 请参阅 RENAME TABLE 语句,它可更改表的名称和所
有权。)
有数据库级 DBA 权限的用户自动地收到那个数据库中每一表的所有表级权限。
表级权限



GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 662
元素
描述
限制
语法
column
授予对列的 References、Select
或 Update 权限。缺省的范围是
table、view 或 synonym 的所有
列。
必须为
table、view
或 synonym 的

标识符
owner
拥有该 table、view 或 synonym
的用户名称
必须为有效的
授权标识符
所有者名称
synonym,
table,
view
授予权限的同义词、表或视图。
在当前数据库
中必须存在
标识符
GRANT 语句可罗列下列关键字中一个或多个,来指定您授予同样的用户或角色的
表权限。
权限
作用
INSERT
让您插入行
DELETE
让您删除行
SELECT
让您访问 SELECT 语句中的任何列。您可通过罗列列来将
Select 权限限定到一列或多列。
UPDATE
让您访问 UPDATE 语句中的任何列。您可通过罗列列来将
Update 权限限定到到一列或多列。
REFERENCES
让您定义对列的引用约束。您必须有 Resource 权限来利用
References 权限。(然而,您可在 ALTER TABLE 语句期间添
加参考约束,而无需持有数据库的 Resource 权限。)您仅需
References 权限来指出级联删除。您无需 Delete 权限来在表
上放置级联删除。您可通过罗列列来将 References 权限限定
到一列或多列。
INDEX
让您创建永久索引。您必须有 Resource 权限来使用 Index 权
限。(有 Connect 权限的任何用户可在临时表上创建索引。)

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 663
权限
作用
ALTER
让您添加或删除列,修改列数据类型,添加或删除约束,将表
的锁定模式由 PAGE 修改为 ROW,或为您的表添加或删除对应
的 ROW 数据类型。 它还让您启用或禁用索引、约束和触发
器,如 SET Database Object Mode 语句 中所描述。
您必须有 Resource 权限来使用 Alter 权限。此外,对于受
ALTER TABLE 语句影响的任何用户定义的数据类型,您还需要
Usage 权限。
UNDER
让您创建类型表之下的子表。
ALL
提供以上列出的所有权限。PRIVILEGES 关键字是可选的。
您可通过指定权限适用的列来缩小 Select、Update 或 References 权限的范围。
指定关键字 PUBLIC 为 user,如果您想要 GRANT 语句应用于所有用户。
以下一些简单的示例展示如何以 GRANT 语句来授予表级权限。
下列语句将删除和选择表 customer 中的任何列的值的权限授予用户 mary 和
john。它还授予 Update 权限,但仅限于列 customer_num、fname 和 lname:
GRANT DELETE, SELECT, UPDATE (customer_num, fname, lname)
ON customer TO mary, john;
要将上述相同的权限授予给所有授权的用户,请使用关键字 PUBLIC,如下列示
例所示:
GRANT DELETE, SELECT, UPDATE (customer_num, fname, lname)
ON customer TO PUBLIC;
对于 GBase 8s 数据库,假设名为 mary 的用户已经创建了名为 tab1 的类型
表。在缺省情况下,仅用户 mary 可创建 tab1 表之下的子表。如果 mary 想要
将在 tab1 表之下创建子表的能力授予名为 john 的用户,则 mary 必须输入下
列 GRANT 语句:
GRANT UNDER ON tab1 TO john;
收到 tab1 表上的 Under 权限之后,用户 john 可创建 tab1 之下的一个或多个
子表。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 664
ALL 关键字的作用
ALL 关键字将所有可能的表级权限授予指定的用户。如果对于 grantor 任何或所
有表级权限都不存在,则带有 ALL 关键字的 GRANT 语句成功(如同 SQLCODE
设置为零,即使对于 grantor 在表上可能的权限设置为空)。然而,在这种情况
下,返回下列 SQLSTATE 警告:
01007 - Privilege not granted.
例如,假设用户 ted 在 customer 上有 Select 和 Insert 权限,将那些权限授予
其他用户。
用户 ted 想要将所有表级权限授予用户 tania。因此,用户 ted 发出下列
GRANT 语句:
GRANT ALL ON customer TO tania;
此语句成功地执行,但由于下列原因返回 SQLSTATE 代码 01007:

该语句成功地将 Select 和 Insert 权限授予用户 tania,因为用户 ted 有
那些权限和将那些权限授予其他用户的权利。

ALL 关键字暗含的其他权限不可由 ted 授予,因此没有授予用户
tania。
如果您以 ALL 关键字授予所有表级权限,则仅当该表为类型表时该权限才包括
Under 权限。ALL 权限的授予不包括 Under 权限,如果该表不是基于 ROW 类
型的。
如果表所有者授予传统的关系表 ALL 权限,并在后来将那个表更改为类型表,
则表所有者必须明确地授予 Under 权限来允许其他用户创建它之下的子表。
表引用
通过制定表的或视图的名称或现有的同义词,您直接授予表级权限,可以 owner
名称来限定。
表引用


GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 665
元素
描述
限制
语法
owner
拥有 table、view 或
synonym 的用户的名称
必须为有效的授权标识符 所有者名称
synonym,
table,
view
对其授予权限的同义
词、表或视图
table、view 或 synonym
必须在数据库中存在
标识符
对其授予权限的对象必须位于当前数据库中。
对于 CREATE EXTERNAL TABLE 语句已经在当前数据库中注册的表对象,支
持 Select 权限和 Insert 权限,但不可授予或取消对其他表或列的访问权限。
在符合 ANSI 的数据库中,如果 owner 未加引号,则数据库以小写字母方式存
储所有者名称。
对表和同义词的权限
在符合 ANSI 的数据库中,如果您创建表,则仅有您作为该表的所有者拥有任何
表级权限,直到您明确地将它们授予其他人为止。
然而,当您在不符合 ANSI 的数据库中创建表时,PUBLIC 获得那个表的
Select、Insert、Delete、Under 和 Update 权限。(当设置为 yes 时,
NODEFDAC 防止 PUBLIC 自动地获得这些表级权限。)
要允许某些用户访问,或仅访问不符合 ANSI 的数据库中的某些列,您必须明确
地取消 PUBLIC 在缺省情况下获得的权限,然后仅授予您想要授予的权限。例
如,这一系列语句将对整个 customer 表的权限授予用户 john 和 mary,但限定
PUBLIC 仅对那个表中的四列有 Select 权限:
REVOKE ALL ON customer FROM PUBLIC;
GRANT ALL ON customer TO john, mary;
GRANT SELECT (fname, lname, company, city) ON customer TO PUBLIC;

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 666
对视图的权限
您对表或列必须至少有 Select 权限来创建在那个表上的视图。对那些在当前数据
库中仅引用表的视图,如果视图所有者失去对该视图的任何基本表的 Select 权
限,则删除该视图。
您对该视图有的权限与您对为该视图提供数据的一表或多表的权限相同。例如,
如果您从仅有 Select 权限的表创建视图,则您可从该视图选择数据,但不可删除
或更新数据。要获取更多关于如何创建视图的信息,请参阅 CREATE VIEW 语
句。
当您创建视图时,PUBLIC 不会自动地获得对您创建的视图的任何权限。仅有您
有权通过那个视图访问表数据。即使是对该视图的基本表有权限的用户,也不会
自动地获得对该视图的权限。
仅当您是底层基本表的所有者,或您获得了对基本表的这些权限有权授予那些
(通过 WITH GRANT OPTION 关键字指定的)权限,您才可对视图授予(或取
消)权限。您必须在自己的权限之内明确地授予那些权限,因为在创建视图时,
PUBLIC 没有自动地获得对它的任何权限。
视图的创建者可明确地将对该视图的 Select、Insert、Delete 和 Update 权限授予
其他用户或授予一角色。您不可对视图授予 Index、Alter、Under 或 References
权限(也不可指定视图的 ALL 关键字,因为 ALL 包含 Index、References 和
Alter 权限)。
当 GRANT 或 REVOKE 语句更改对任何表的自主访问权限,而现有视图的定义
中引用该表,则数据库服务器不自动地将那些权限变更应用到该视图。要将新表
访问权限应用到依赖于那一表的视图,您可使用 DROP VIEW 和 CREATE VIEW
语句来删除并重新创建该视图。
在此情况下,如果其他视图的定义引用您删除的视图,或如果在那一视图上定义
了 INSTEAD OF 触发器,则您还可使用 CREATE VIEW 和 CREATE TRIGGER
语句来分别重新创建那些由 DROP VIEW 语句破坏的相依赖的视图和 INSTEAD
OF 触发器。
类型级权限
您可对不是内建数据类型的数据类型指定两种权限:

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 667

对用户定义的数据类型的 Usage 权限

对命名的 ROW 类型的 Under 权限
类型级权限

元素
描述
限制
语法
row_type_name
授予 Under 权限的
命名的 ROW 类型
命名的 ROW 数据
类型必须存在
标识符; 数据
类型
type_name
授予 Usage 权限的
用户定义的类型
用户定义的数据类
型必须存在。
标识符; 数据
类型
要看到在用户定义的数据类型上存在什么权限,请在 sysxtdtypes 系统目录表检
查每一 UDT 的 owner,并在 sysxtdtypeauth 系统目录表检查在 UDT 上持有权
限的任何其他用户或角色。要获取关于系统目录表的信息,请参阅 GBase 8s SQL
参考指南。
然而,对于所有内建数据类型,PUBLIC 自动地获得这些访问权限且不可取消。
USAGE 权限
您拥有您创建的任何用户定义的数据类型(UDT)。作为所有者,您自动地获得
那种数据类型的 Usage 权限,并可将 Usage 权限授予其他人,以便他们可在
SQL 语句中引用该类型名称或数据。DBA 还可授予 UDT 的 Usage 权限。
下列示例授予用户 mark 访问权限来使用 widget 用户定义的类型:
GRANT USAGE ON TYPE widget TO mark;
如果您将 Usage 权限授予有 Alter 权限的用户(或角色),则被授予者可向包含
您的 UDT 的值的表添加列。
没有来自 GRANT 语句的权限,任何用户都可发出引用内建数据类型的 SQL 语
句。相反,用户必须从 GRANT 语句获得显示的 Usage 权限,才能使用 distinct
数据类型,即使该 distinct 类型基于内建类型。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 668
要获得更多关于用户定义的类型的信息,请参阅 CREATE OPAQUE TYPE 语
句、CREATE DISTINCT TYPE 语句,在 GBase 8s SQL 参考指南 和 GBase 8s
数据库设计和实现指南 中对数据类型的讨论。
UNDER 权限
您拥有您创建的任何命名的 ROW 类型。如果您想要其他用户能够创建此命名的
ROW 类型之下的子类型,则必须授予这些用户对您的命名的 ROW 类型的
Under 权限。
例如,假设您创建名为 rtype1 的 ROW 类型:
CREATE ROW TYPE rtype1 (cola INT, colb INT);
如果您想要名为 kathy 的另一用户能够创建此命名的 ROW 类型之下的子类
型,则必须授予用户 kathy 对此命名的 ROW 类型的 Under 权限:
GRANT UNDER ON ROW TYPE rtype1 TO kathy;
现在,用户 kathy 可创建 rtype1 ROW 类型之下的另一 ROW 类型,即使
kathy 不是 rtype1 ROW 类型的所有者:
CREATE ROW TYPE rtype2 (colc INT, cold INT) UNDER rtype1;
要获取更多关于命名的 ROW 类型的信息,请参阅 CREATE ROW TYPE 语句,
以及 GBase 8s SQL 参考指南 和 GBase 8s 数据库设计和实现指南 中数据类型的
讨论。
例程级权限
当您创建用户定义的例程(UDR),您成为该 UDR 的所有者,您自动地获得对
那个 UDR 的 Execute 权限。
Execute 权限允许您以 EXECUTE FUNCTION 或 EXECUTE PROCEDURE 语句,任何一
个都适用,或以 SPL 例程中的 CALL 语句来调用该 UDR。 Execute 权限还允许
您使用表达式中的用户定义的函数,如下示例所示:
SELECT * FROM table WHERE in_stock(partnum) < 20;
对于需要对给定的 UDR 有 Execute 权限的用户、角色或 PUBLIC 组的成员,
GRANT 语句支持下列语法:

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 669
例程级权限

元素
描述
限制
语法
routine
用户定义的例程 必须存在
标识符
SPL _routine
SPL 例程
必须在数据库中是唯一的
标识符
下列语句将对 delete_order 例程的 Execute 权限授予用户 finn:
GRANT EXECUTE ON ROUTINE delete_order TO finn;
您是否必须显式地授予 Execute 权限,有赖于下列条件:

如果您有 DBA 级权限,则可使用 CREATE FUNCTION 或 CREATE
PROCEDURE 的 DBA 关键字来限定那些有 DBA 权限的用户的缺省
Execute 权限。您必须显式地将对那个 UDR 的 Execute 权限显式地授予
那些没有 DBA 权限的用户。

如果您有 Resource 数据库级权限但没有 DBA 权限,则当您创建 UDR
时不可使用 DBA 关键字:
o
当您在不符合 ANSI 的数据库中创建 UDR 时,PUBLIC 可执行
那个 UDR。您不需为其他获得 Execute 权限的用户发出 GRANT
语句。
o
设置 NODEFDAC 环境变量为 yes 以防 PUBLIC 执行 UDR,
直到您显式地授予 Execute 权限为止。

在符合 ANSI 的数据库中,UDR 的创建者必须显式地将该 UDR 的
Execute 权限授予其他用户,使之能够执行它。
在 GBase 8s 中,如果两个或多个 UDR 同名,则使用下列列表中的关键字来指
定用户列表可执行那些 UDR 中的哪些。
关键字 用户可执行的 UDR

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 670
SPECIFIC 由 specific name 标识的 UDR
FUNCTION 任何带有指定的 routine name (以及与 routine 参数列表相匹
配的参数类型,如果指定的话)的函数
PROCEDURE 任何带有指定的 routine name(以及与参数列表相匹配的参数
类型,如果指定的话)的过程
ROUTINE 带有指定的 routine name(以及与例程参数列表相匹配的参数类
型,如果指定的话)的函数或过程
如果 GBase 8s 的用户定义的函数和用户定义的过程都有相同的名称和相同的参
数数据类型的类表,则可以关键字 ROUTINE 给二者授予 Execute 权限。
要将 Execute 权限限定到有相同标识符的几个例程中的一个,请使用
FUNCTION、PROCEDURE 或 SPECIFIC 关键字。
要将 Execute 权限限定到接受特定数据类型为参数的 UDR,请包括例程参数列
表或使用 SPECIFIC 关键字来引入 UDR 的特定名称。
如果外部函数有 negator 函数,则在其他用户可执行该外部函数之前,您必须对
外部函数及其 negator 函数都授予 Execute 权限。
用户必须对该语言持有 Usage 权限,该用户定义的例程由该语言编写并以
CREATE FUNCTION、CREATE FUNCTION FROM、CREATE PROCEDURE、
CREATE PROCEDURE FROM 或 CREATE ROUTINE FROM 语句来注册
UDR。要获取更多关于注册 UDR 的要求的信息,请参阅 使用 CREATE
FUNCTION 时必需的特权。
将 Execute 权限授予 PUBLIC
GRANT 语句支持将访问权限授予 PUBLIC 组的语法,该组包括持有对数据库的
Connect 权限的所有用户。
GRANT EXECUTE TO PUBLIC


GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 671
元素
描述
限制
语法
grantor UDR 的所有者
不可为角色
所有者名称
此语句使得 PUBLIC 组中的每个用户都可以执行指定的例程。它覆盖
NODEFDAC 环境变量,如果该变量的设置阻止 PUBLIC 组在缺省情况下获得对
例程的 Execute 权限的话。此语句还使那些不持有 DBA 权限的用户可以执行指
定的例程,不论是否以 DBA 关键字创建了那个例程。
仅持有 DBA 权限的用户可指定 AS grantor 子句。指定的 grantor 必须为指定的
例程的所有者,罗列在 sysprocedures 系统目录表的 owner 列中。grantor 不可
为角色的名称或 PUBLIC 关键字。
在符合 ANSI 的数据库中,需要 AS grantor 子句,而不是作为可选项,如果发
出 GRANT EXECUTE 语句的 DBA 不是指定的例程的所有者的话。
仅在可选的 AS grantor 子句中指定的用户可使用 SQL 的 REVOKE 语句来从
PUBLIC 组取消 Execute 权限
在可选的 AS grantor 子句中指定的用户可使用 REVOKE 语句来从 PUBLIC 组
取消 Execute 权限。
将 Execute 权限从 PUBLIC 取消
REVOKE 支持下列从 PUBLIC 组取消对特定的例程的访问权限的语法,该组包
括对数据库持有 Connect 权限的所有用户。
REVOKE EXECUTE TO PUBLIC

元素
描述
限制
语法
revoker UDR 的所有者
不可为角色
所有者名称

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 672
此语句防止 PUBLIC 组在缺省情况下获得对指定的例程的 Execute 权限。(然
而,个别的持有 DBA 权限的用户,或拥有该例程的用户,或被个别地授予了或
通过角色获得了对此例程的 Execute 权限的用户,他们不受此语句的影响。
仅持有 DBA 权限的用户可指定 AS revoker 子句。指定的取消者必须为指定的例
程的所有者,罗列在 sysprocedures 系统目录表的 owner 列中。该名称不可为角
色的名称或 PUBLIC 关键字。
在符合 ANSI 的数据库中,需要 AS revoker 子句,而不是可选的,如果发出
REVOKE EXECUTE 语句的 DBA 不是指定的例程的所有者的话。
在 PUBLIC 组在缺省情况下持有对所有者权限的例程的 Execute 权限的数据库
中,在将对执行指定的例程的自主访问权限可授权给用户的子集或授权给一个或
多个角色之前,必须成功地执行 REVOKE EXECUTE ON PUBLIC 语句。否则,
仅有 DBA 权限的用户或该例程的所有者可启动它。
语言级权限
GBase 8s 还支持语言级权限,该权限指定 UDR 的编程语言,已经被授予了给定
语言的 Usage 权限的用户可将它注册在数据库中。
这是对编程语言授予 Usage 权限的 USAGE ON LANGUAGE 子句的语法:
语言级权限

SPL、C 和 JAVA 关键字可指定 USAGE ON LANGUAGE 子句中的编程语言。
每一 GRANT USAGE ON LANGUAGE 语句至多可指定一种编程语言。在缺省情
况下,将对 SPL 的 Usage 权限授予 PUBLIC。
当用户执行 CREATE FUNCTION 或 CREATE PROCEDURE 语句来注册以
SPL、C 或 Java™ 语言编写的 UDR 时,数据库服务器验证用户是否拥有对编写
UDR 所用语言的 Usage 权限。如果 IFX_EXTEND_ROLE 配置参数已经启用了
内建 EXTEND 角色,则只有还持有那种角色的用户可注册或删除以 C 语言或以

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 673
Java 语言编写的 UDR,即使用户持有对那些语言的 USAGE ON LANGUAGE 权
限。
GRANT USAGE ON LANGUAGE 语句可将对编程语言的 Usage 权限授予给用户的受限
组。下列示例将对 C 语言的 Usage 权限授予名为 developers 的用户定义的角
色:
GRANT USAGE ON LANGUAGE C TO developers;
如果上述示例成功地执行,则持有 developers 作为当前角色的用户可创建或删
除 C 例程(如果他们还持有 EXTEND 角色,或者如果 IFX_EXTEND_ROLE 参数设
置为 0 或 Off 的话)。
要获取关于这些语句需要的其他访问权限的信息,请参阅 CREATE FUNCTION
语句 和 CREATE PROCEDURE 语句。
在存储过程语言中的 Usage 权限
在缺省情况下,将对 SPL 的 Usage 权限授予 PUBLIC。仅用户 gbasedbt、DBA
或获得了 Usage 权限 WITH GRANT OPTION 的用户可将对 SPL 的 Usage 权
限授予另一用户。
在下列示例中,假设从 PUBLIC 取消了对 SPL 的 Usage 权限,且 DBA 想要将对
SPL 的 Usage 权限授予名为 developers 的角色:
GRANT USAGE ON LANGUAGE SPL TO developers;
序列级权限
虽然 GBase 8s 以表的方式实现序列对象,但仅可对序列授予表级权限的子集
( 页 表级权限)。您可对序列授予 Select 和/或 Alter 权限:
序列级权限


GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 674
元素
描述
限制
语法
owner
sequence 的所有者(或
synonym 的所有者)
必须为所有者
所有者名称
sequence 对其授予权限的序列
必须存在
标识符
synonym
序列对象的同义词
必须存在
标识符
在当前数据库中必须存在该序列对象。您可以有效的 owner 名称限定该
sequence 或 synonym 标识符,但远程 database(或 database@server)的名称不
是有效的限定符。当您将 ALTER、SELECT 或 ALL 授予用户或授予 PUBLIC
(但不授予角色)作为对序列对象的权限时,可包括 WITH GRANT OPTION 关
键字。
Alter 权限
您可将对序列的 Alter 权限授予另一用户或角色。Alter 权限使得指定的用户或角
色能够以 ALTER SEQUENCE 语句修改序列的定义,或以 RENAME
SEQUENCE 语句重命名该序列。
下列语句将对 cust_seq 序列对象的 Alter 权限授予用户 mark:
GRANT ALTER ON cust_seq TO mark;
Select 权限
您可将对序列的 Select 权限授予另一用户或角色。Select 使得指定的用户和角色
能够在 SQL 语句中使用 sequence.CURRVAL 和 sequence.NEXTVAL 表达式
来读取或(分别地)增大序列的值。
下列语句将对 cust_seq 序列对象的 Select 权限授予用户 mark:
GRANT SELECT ON cust_seq TO mark;
ALL 关键字
您可指定 ALL 关键字来将对序列对象的 Alter 和 Select 权限都授予另一用户或
角色,或用户或角色的列表。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 675
用户列表
您可将权限授予个别的用户或授予用户的列表。您还可指定 PUBLIC 关键字来给
所有用户授予权限。
用户列表

元素
描述
限制
语法
user
您正在授予权限的用户或角色的
登录名
必须是有效的授权
标识符
所有者名称
下列示例在不符合 ANSI 的数据库中,将对 table1 的 Insert 表级权限授予用户
mary:
GRANT INSERT ON table1 TO mary;
在符合 ANSI 的数据库中,如果您不包括引号作为括起 user 的限定符,则以大
写字母存储用户名。
您可指定 ALL 关键字来将对序列对象的 Alter 和 Select 权限都授予另一用户或
角色,或用户或角色的列表。
角色名称
您可使用 GRANT 语句来将一个或多个用户(或者所有用户,使用 PUBLIC 关
键字)与可以描述它们行为的 role 名称关联。在您声明并授予角色之后,您授予
那个角色的权限因而授予给当前与那个角色相关联的所有用户。
角色名称


GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 676
元素
描述
限制
语法
role
授予的角色,或对其授予
权限的另一角色
必须存在。如果用引号括起
来,则 role 区分大小写。
所有者名称
您还可将现有的角色授予另一角色。此操作将被授予角色的任何权限都授予有接
收角色的所有用户。
将角色授予用户或另一角色
在 GRANT 语句中可使用角色之前,您必须在数据库中注册角色。要获取更多信
息,请参阅 CREATE ROLE 语句。
DBA 有权限将新角色授予另一用户。如果用户得到角色 WITH GRANT
OPTION,则那个用户可将该角色授予其他用户或另一角色。用户保持授予他们的
角色,直到 REVOKE 语句将他们的登录名与此角色名称的关联中断。
重要: CREATE ROLE 和 GRANT 语句不激活角色。非缺省的角色不起作用,
直到 SET ROLE 启用它。角色的授予者和被授予者可发出 SET ROLE 语句。
下列示例展示将 payables 角色授予或激活给执行应付账款功能的员工组所需要
的操作。首先,DBA 创建角色 payables,然后将它授予 maryf。
CREATE ROLE payables;
GRANT payables TO maryf WITH GRANT OPTION;
DBA 或 maryf 可以下列语句激活该角色:
SET ROLE payables;
用户 maryf 有 WITH GRANT OPTION 权限来将 payables 授予其他支付账款的
员工。
GRANT payables TO charly, gene, marvin, raoul;
如果您将一个角色授予权限给另一角色,则接受的角色具有已经授予给两个角色
的权限的组合集。下列示例将角色 petty_cash 授予角色 payables:
CREATE ROLE petty_cash;
SET ROLE petty_cash;
GRANT petty_cash TO payables;

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 677
在成功地执行所有这些语句之后,如果用户 raoul 使用 SET ROLE 语句来将
payables 作为其当前角色,那么(任何 REVOKE 操作的作用除外)他持有下列
访问权限的组合集:

授予 payables 角色的权限

授予 petty_cash 角色的权限

单个地授予 raoul 的权限

授予 PUBLIC 的权限
如果您尝试将角色授予自己,或者直接地或者间接地,数据库服务器都会生成错
误。(然而,如果要获取对此规则的重要例外的信息,请参阅 DBSECADM 子句
的描述。)
如果您在将角色分配给另一角色的 GRANT 语句中包括 WITH GRANT OPTION
关键字,则数据库服务器还生成错误。
将权限授予角色
您可将表级和例程级访问权限授予角色,如果您有权限来将这些相同的权限授予
登录名或 PUBLIC 的话。您还可将类型级权限授予角色。角色不可持有数据库级
权限。
重要: 用户定义的角色的范围(以及 GRANT 语句分配给该角色的自主访问权限
的范围)为当前数据库。当 GRANT DEFAULT ROLE 或 SET ROLE 语句激活角色
时,该角色及其权限仅在当前数据库生效。作为安全预防措施,用户仅从角色获
得的自主访问权限,不可通过视图或通过触发器的动作提供对当前数据库之外的
表的访问。
与授予用户相比,给角色授予权限的语法受到更多限制:

您可指定 AS grantor 子句。
以这种方式,有该角色的任何用户都可取消这些相同的权限。要获取更多
信息,请参阅 AS grantor 子句。

你不可包括 WITH GRANT OPTION 子句。
反过来,角色不可将相同的访问权限授予另一用户。
此样例将 supplier 表上的 Insert 权限授予角色 payables:

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 678
GRANT INSERT ON supplier TO payables;
已经被授予 payables 角色的任何用户,以及通过发出 SET ROLE 语句成功地激
活它的用户,现在可插入行到 supplier 内。
授予缺省的角色
DBA 或数据库的所有者(缺省情况下,用户 gbasedbt)可以 GRANT DEFAULT
ROLE 语句为一个或多个用户,或为 PUBLIC 定义缺省的角色。当该用户连接到
数据库时,激活一个缺省的角色。不需要 SET ROLE 语句来激活缺省的角色。
如果用户通过客户端应用访问数据库,该应用不可更改访问权限也不可设置角
色,则缺省的角色非常有用。
缺省的角色可为被分配了那个角色的所有用户指定一系列访问权限,如下列示例
中所示:
CREATE ROLE accounting;
GRANT ALTER, INSERT, SELECT ON stock TO accounting;
GRANT DEFAULT ROLE accounting TO mary, asok, vlad;
最后的语句提供给用户 mary、asok 和 vlad 以 accounting 作为他们的缺省的角
色。如果这些用户中的任何人连接到数据库,则那个用户激活 accounting 角色持
有的任何权限,除了用户作为个别用户或作为 PUBLIC 已经拥有的任何角色之
外。
该角色必须已经存在,且该用户必须有访问权限来设置该角色。如果先前不曾将
该角色授予用户,它会被作为设置缺省的角色的一部分被授予。
如果既未为用户也未为 PUBLIC 定义缺省的角色,那么不设置角色,且用户的现
有权限有效。
下列示例展示缺省的角色是如何可分配给所有用户的:
DATABASE hrdb;
CREATE ROLE emprole;
GRANT CONNECT TO PUBLIC;
GRANT SELECT ON emptab TO emprole;
GRANT emprole TO PUBLIC;
GRANT DEFAULT ROLE emprole TO PUBLIC;

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 679
注: 使用 GRANT DEFAULT ROLE 是在 sysdbopen( ) 过程中发出 SET
ROLE 语句的一种备用方法。然而,当用户建立连接时,使用 sysdbopen( ) 过
程定义的缺省的角色优先于任何其他角色。
为用户或为 PUBLIC 更改缺省的角色仅影响新的数据库连接。在当前分配的角色
之下,现有的连接继续运行。如果将缺省的角色授予了 user,且另一缺省的角色
授予了 PUBLIC,则在连接的时候,授予 user 的缺省的角色优先。
不可将缺省的角色分配给另一角色。因为角色不是跨数据库定义的,必须为每一
数据库分配缺省的角色。在 GRANT DEFAULT ROLE 语句中的 TO 关键字之
后,除了 user-list 之外没有有效的选项。如果您尝试包括 AS grantor 子句或
WITH GRANT OPTION 子句,则数据库服务器发出错误。
授予 EXTEND 角色
如果 IFX_EXTEND_ROLE 配置参数设置为 ON 或 1,仅持有 EXTEND 角色的
用户(以及还持有对数据库的 Resource 权限和对用于编写 UDR 的编程语言的
Usage 权限的用户)可创建或删除以 C 或 Java™ 外部语言编写的 UDR,这些
语言可支持共享库。
数据库服务器管理员(DBSA),缺省情况下用户 gbasedbt,可以 GRANT
EXTEND TO user-list 语句将 EXTEND 角色授予一个或多个用户或授予
PUBLIC。
由于 EXTEND 为内建的角色,所以 SET ROLE 语句不需要 EXTEND 角色来使
之生效。用户持有 EXTEND 角色就足够了,无需使用 SET ROLE 来启用它。
例如,假设用户 max 持有对数据库的 Resource 权限,且已经通过 GRANT USAGE
ON LANGUAGE C 语句被授予了对 C 语言的 Usage 权限。下列语句将 EXTEND 角
色授予用户 max:
GRANT EXTEND TO 'max';
此语句使得用户 max 能够创建或删除以 C 语言编写的 UDR,而不要求 max
发出 SET ROLE EXTEND 语句。(此处引号在授权标识符 max 中保持小写字
母。)然而,在用户 max 可创建或删除以 Java 语言编写的 UDR 之前,有效的
GRANT USAGE ON LANGUAGE JAVA 语句的 TO 子句必须指定或者 'max',

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 680
或者 PUBLIC,或者 max 持有的用户定义的角色的名称(以及 max 已经使用
SET ROLE 语句来指定为他的当前角色)。
在不需要此安全特性的数据库中,DBSA 可通过在 ONCONFIG 文件中将
IFX_EXTEND_ROLE 配置参数设置为 OFF 或 0 来禁用对谁可创建或删除外部
UDR 的限制。当 IFX_EXTEND_ROLE 设置为 OFF 或 0 时,任何持有
Resource 权限的用户(以及还持有对以其编写该 UDR 的编程语言的 Usage 权
限的用户)都可创建或删除外部 UDRs。
对任何要创建或删除外部 UDR 的用户而言,对数据库的 Resource 权限和对外
部语言的 Usage 权限都是需要的,不管 IFX_EXTEND_ROLE 配置参数设置如
何,或该用户是否持有 EXTEND 角色。用户 gbasedbt、DBA 或任何已经获得
Usage 权限 WITH GRANT OPTION 的用户都可将对 SPL、C 和 Java 语言的
Usage 权限授予 PUBLIC。要获取关于授予 Resource 权限的信息,请参阅 数据
库级权限。要获取关于授予对编程语言的 Usage 权限的信息,请参阅 语言级权
限。
WITH GRANT OPTION 关键字
WITH GRANT OPTION 关键字将权限或角色传递给 user,随同将相同的权限或
角色授予其他用户的权利。
请您创建以您开头的权限链,并扩展至 user 以及 user 随后将授予权限的权利传
递给的任何用户。如果您包括 WITH GRANT OPTION,则可不再控制权限的分
发。
下列示例将对 cust_seq 序列对象的 Alter 和 Select 权限授予用户 mark,随
同将那些权限授予其他用户的能力:
GRANT ALL ON cust_seq TO mark WITH GRANT OPTION;
如果您从 user 将使用 WITH GRANT OPTION 授予的权限取消,则切断该权限
链。即当您从 user 取消权限时,自动地取消了从 user 或从 user 创建的链获取
了权限的所有用户的权限(除非其他用户给 user、或从 user 获得授权的用户授
予了相同的权限集)。
下列示例展示此情况。作为表 items 的所有者,您发出下列语句来将访问权限授
予用户 mary:

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 681
REVOKE ALL ON items FROM PUBLIC;
GRANT SELECT, UPDATE ON items TO mary WITH GRANT
OPTION;
用户 mary 使用其权限来授予用户 cathy 和 paul 访问此表的权限:
GRANT SELECT, UPDATE ON items TO cathy;
GRANT SELECT ON items TO paul;
稍后,您从用户 mary 取消对 items 表的访问权限:
REVOKE SELECT, UPDATE ON items FROM mary;
此单一语句有效地取消用户 mary、cathy 和 paul 对 items 表的所有权限。如
果您想要与另一用户创建权限链作为权限源,请使用 AS grantor 子句。
在 GBase 8s 中,WITH GRANT OPTION 关键字仅对用户有效。如果将角色作为
权限或另一角色的被授权者,则为无效。您不可在语句中指定 WITH GRANT
OPTION 给 PUBLIC 组授予权限。
“数据库服务器管理员”不可在 GRANT EXTEND 或 GRANT DBSECADM 语句
中包括 WITH GRANT OPTION 关键字。DBSA 不可将授予内建的 EXTEND 或
DBSECADM 角色的权限分派给另一用户。如果多个用户需要这些权限,则应在
安装数据库服务器时将他们包括在 DBSA 组中。
除了 GRANT DBSECADM 语句之外,GRANT 语句的其他安全管理选项都不支
持 WITH GRANT OPTION 关键字。要获取关于这些语句及其语法的详细信息,
请参阅 安全管理选项。
AS grantor 子句
当您将自主访问权限授予其他用户、角色或 PUBLIC 时,在缺省情况下,您是可
取消那些权限的用户。AS grantor 子句使您建立另一用户作为您正在授予权限的
源。
当您使用 AS grantor 子句时, AS grantor 子句中提供的登录名取代相应系统目
录表中您的登录名。如果您有对该数据库的 DBA 权限,则您可使用此子句。
在您使用此子句之后,仅指定的 grantor 可取消当前 GRANT 操作产生的影响。
即使 DBA 也不可取消权限,除非那个 DBA 作为授予了该权限的用户被罗列在
系统目录表中。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 682
下列示例展示此情况。您是 DBA,且您将对 items 表的所有权限授予用户 tom,
随同授予所有权限的权利:
REVOKE ALL ON items FROM PUBLIC;
GRANT ALL ON items TO tom WITH GRANT OPTION;
下一示例展示不同的情况。您还可将 Select 和 Update 权限授予用户 jim,但您
指定作为用户 tom 授予了该权限。(数据库服务器在 systabauth 系统目标表中
的记录显示用户 tom 为那些权限的授予者,而不是您。)
GRANT SELECT, UPDATE ON items TO jim AS tom;
随后,您决定从用户 user tom 取消对 items 表的权限,于是您发出下列语句:
REVOKE ALL ON items FROM tom;
然而,如果不是如此,您试图以类似的语句从用户 jim 取消权限。则数据库服务
器返回错误,如下例所示:
REVOKE SELECT, UPDATE ON items FROM jim;

580: Cannot revoke permission.
因为数据库服务器记录显示原始的授权者为用户 tom,且您不可取消该权限,所
以您收到错误。虽然您是 DBA,但您不可取消另一用户授予了的权限。
在 GRANT DEFAULT ROLE 语句内,AS grantor 子句无效。
要了解 AS grantor 子句处需要的上下文,而不是可选项,请参阅 将 Execute 权
限授予 PUBLIC。
安全管理选项
结合 REVOKE 语句,GRANT 通过指定哪些用户或角色持有访问数据库内的数
据库或对象所需要的权限, 支持 GBase 8s 的自主访问控制(DAC)数据安全特
性。
GRANT 语句的“安全管理选项”,就像 REVOKE 语句的对应选项,支持附加的
数据安全特性集,称为基于标签的访问控制(LBAC)。 这些特性使得 GBase 8s
能够允许或拒绝对访问受保护的数据,这是基于将包含在数据对象中的行安全标
签或列安全标签与已经授予正在搜索访问的用户的用户安全标签和其他凭证相比
较来完成的。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 683
安全管理选项

这些 GRANT 语句安全管理选项的使用限于:

仅”数据库服务器管理员(DBSA),缺省为用户 gbasedbt,或(在
UNIX™ 上)DBSA 组的成员,或(在 Windows™ 上)Gbasedbt-
Admin 组的成员,可使用 GRANT DBSECADM 语句来授予
DBSECADM 角色。

仅持有 DBSECADM 角色的用户可发出 GRANT EXEMPTION、GRANT
SECURITY LABEL 或 GRANT SETSESSIONAUTH 语句,或相应的
REVOKE 语句。
DBSECADM 子句
GRANT DBSECADM 语句使得被授予 DBSECADM 角色的用户能够发出 DDL
语句,可创建、更改、重命名或删除安全对象,包括安全策略、安全标签和安全
组件。
DBSECADM 子句

元素
描述
限制
语法
user 被授予该角色的用户
必须为用户的权限标识符 所有者名称
DBSECADM 角色是仅 DBSA 可授予的内建的角色。用户定义的角色的范围是创
建该角色所在的数据库,与用户定义的角色不同,BSECADM 角色的范围是
GBase 8s 实例的所有数据库。在同一服务器的其他数据库中,DBSA 不必重新发

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 684
出 GRANT DBSECADM 语句,就像 GBase 8s 的所有内建的角色一样,当授予
DBSECADM 角色时,即启用该角色,无需通过 SET ROLE 语句激活,且保持有
效直到被取消为止。
仅持有 DBSECADM 角色的用户可发出下列创建或修改安全对象的 SQL 语句:

ALTER SECURITY LABEL COMPONENT

CREATE SECURITY LABEL

CREATE SECURITY LABEL COMPONENT

CREATE SECURITY POLICY

DROP SECURITY LABEL

DROP SECURITY LABEL COMPONENT

DROP SECURITY POLICY

RENAME SECURITY LABEL

RENAME SECURITY LABEL COMPONENT

RENAME SECURITY POLICY
仅持有 DBSECADM 角色的用户可使用下列 SQL 语句来引用那些被安全策略保
护的表:

ALTER TABLE ... ADD SECURITY POLICY

ALTER TABLE ... ADD ... IDSSECURITYLABEL [DEFAULT label]

ALTER TABLE ... ADD ... [COLUMN] SECURED WITH

ALTER TABLE ... DROP SECURITY POLICY

ALTER TABLE ... MODIFY ... [COLUMN] SECURED WITH

ALTER TABLE ... MODIFY ... DROP COLUMN SECURITY

CREATE TABLE ... COLUMN SECURED WITH

CREATE TABLE ... IDSSECURITYLABEL [DEFAULT label]

CREATE TABLE ... SECURITY POLICY
不持有 DBSECADM 角色的用户也不可发出下列 GRANT 和 REVOKE 语句:

GRANT EXEMPTION

GRANT SECURITY LABEL

GRANT SETSESSIONAUTH

REVOKE EXEMPTION

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 685

REVOKE SECURITY LABEL

REVOKE SETSESSIONAUTH
可跟在 TO 关键字之后的 USER 关键字是可选的,且没有作用,但 DBSA 在
GRANT DBSECADM 中指定的任何授权标识符都必须是单个用户的标识符,而不
是角色或 PUBLIC 组的标识符。
user 可为发出此 GRANT DBSECADM 语句的 DBSA。这是对通用限制的一个重
要例外,通用限制是指 GRANT 语句的 TO 子句(就如 REVOKE 语句中的
FROM 子句一样)不可显式地引用发出该语句的用户的授权标识符。与其他角色
不同,GRANT 语句可指定访问权限、用户安全标签和规则的豁免,您可给自己
授予 DBSECADM 角色,如果您是用户 gbasedbt,或 DBSA 组的成员或(在
Windows™ 上)如果您是 Gbasedbt-Admin 组的成员。
在下列示例中,DBSA 将 DBSECADM 角色授予用户 niccolo:
GRANT DBSECADM TO niccolo;
如果此语句成功地执行,则用户 niccolo 可执行以上罗列的 LBAC 操作,如果
niccolo 还持有对数据库和对于那些 SQL 语句引用的数据库对象的自主访问权
限的话。
授予用户 DBSECADM 角色之后,仅 DBSA 可取消它。
要了解对 LBAC 安全对象的讨论,请参阅您的 GBase 8s 安全指南。
EXEMPTION 子句
GRANT EXEMPTION 语句通过禁用指定的安全策略的一个或全部规则来修改指
定用户(或用户列表)的安全凭证
EXEMPTION 子句

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 686

元素
描述
限制
语法
policy 从中授予豁免的安全策略
在数据库中必须存在
标识符
user
要授予其豁免的用户
必须为用户的授权标
识符
所有者名称
仅持有 DBSECADM 角色的用户可发出 GRANT EXEMPTION 语句。
授予豁免的规则
跟在 ON 关键字之后的关键字指定授予豁免的安全策略(其标识符跟在 FOR 关
键字之后)的预定义 LBAC 访问规则。当授予其豁免的用户访问由指定的安全策
略保护的表时,授予其豁免的访问规则不再适用。 要了解对与安全策略相关的读
访问和写访问的预定义规则的描述,请参阅章节 与安全策略相关的规则。
下列 GRANT EXEMPTION 语句的关键字标识特定的 IDSLBACRULES 规则,此语句可
从此豁免用户:

IDSLBACREADARRAY 从指定的安全策略的 IDSLBACREADARRAY
规则豁免用户。那个规则要求每一用户安全标签的数组组件必须大于或等
于相应的数据行安全标签的数组组件。

IDSLBACREADSET 从指定的安全策略的 IDSLBACREADSET 规则豁
免用户。那个规则要求用户安全标签的每一集合组件必须包括该数据行安
全标签的集合组件。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 687

IDSLBACREADTREE 从指定的安全策略的 IDSLBACREADTREE 规则
豁免用户。那个规则要求用户安全标签的每一树组件必须至少包括该数据
行安全标签的树组件中的元素之一,或一个这样元素的其他祖先。

IDSLBACWRITEARRAY WRITEDOWN 从指定的安全策略的
IDSLBACWRITEARRAY 规则的一个方面豁免用户。那个规则要求用户
安全标签的每一数组组件必须等于数据行安全标签的数组组件。持有此豁
免的用户可写到其数组组件级别低于用户的标签中的级别的行。然而,该
用户不可写到其数组组件级别标签高于该用户的标签中级别的行。

IDSLBACWRITEARRAY WRITEUP 从指定的安全策略的
IDSLBACWRITEARRAY 规则的一个方面豁免用户。持有此豁免的用户
可写到其数组组件级别高于该用户的标签中的级别的行。然而,该用户不
可写到其标签数组组件级别低于该用户的标签中的级别的行。

IDSLBACWRITEARRAY(无 WRITEDOWN 或 WRITEUP 关键字)从
指定的安全策略的 IDSLBACWRITEARRAY 规则豁免用户。持有此豁
免的用户可写到行,不管相应的行标签的数据组件。

IDSLBACWRITESET 从指定的安全策略的 IDSLBACWRITESET 规则
豁免用户。那个规则要求该用户安全标签的每一集合组件必须包括该数据
行安全标签的集合组件。

IDSLBACWRITETREE 从指定的安全策略的 IDSLBACWRITETREE 规
则豁免用户。那个规则要求该用户安全标签的每一树组件必须包括该数据
行安全标签的树组件中至少一个元素,或一个这样元素的一个祖先。

ALL 从指定的安全策略的所有 IDSLBACRULES 规则豁免用户。这种
形式的豁免要求将数据加载到受保护的表内。
在下列示例中,DBSECADM 从 MegaCorp 安全策略的所有规则授予豁免给用户
manoj 和 sam:
GRANT EXEMPTION ON RULE ALL FOR MegaCorp TO manoj, sam;
安全策略和豁免的被授予者
豁免仅适用于其名称跟在 FOR 关键字之后的安全策略的规则。受保护的表可有
多个安全标签,但最多只能有一个安全策略。
如果在数据库中不存在指定的策略,则 GRANT EXEMPTION 语句失败并报错。
可跟在 TO 关键字之后的 USER 关键字是可选的,且没有作用,但在 GRANT
EXEMPTION 语句中指定的任何授权标识符都必须是单个用户的标识符,而不是

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 688
角色的标识符。 此 user 不可为发出同一 GRANT EXEMPTION 语句的
DBSECADM。
在下列示例中,DBSECADM 从 MegaCorp 安全策略的规则 IDSLBACREADARRAY 授予
用户 lynette 豁免:
GRANT EXEMPTION ON RULE IDSLBACREADARRAY FOR MegaCorp TO
lynette;
此豁免绕过指定策略的安全标签的所有数组组件的读访问规则。
当 GRANT EXEMPTION 语句成功地授权豁免给用户时,该数据库服务器更新系
统目录的 syssecpolicyexemptions 表来注册新的豁免(或多个豁免,如果在 TO
关键字之后罗列了几个用户的话)。
要了解 LBAC 安全对象的讨论,请参阅您的 GBase 8s 。
SECURITY LABEL 子句
GRANT SECURITY LABEL 语句将安全标签授予用户或用户列表。
SECURITY LABEL 子句

元素
描述
限制
语法
label 现有安全标签的名称
必须存在作为指定
的安全 policy 的
标签
标识符
policy 此 label 的安全策略
必须在该数据库中
已存在
标识符
user
要将该标签授予的用户
必须为用户的授权
标识符
所有者名称
仅持有 DBSECADM 角色的用户可发出 GRANT SECURITY LABEL 语句。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 689
安全标签是始终与安全策略关联的数据库对象。那个策略定义构成安全标签的有
效的安全组件的集合。该标签存储安全策略的每一组件的一个或多个值的集合。
DBSECADM 可将安全标签与下列实体关联:

数据库表的一列,列安全标签可保护该列

数据库表的一行,行安全标签可保护该行

用户,其用户安全标签(以及已经授予该用户的安全策略的规则的任何豁
免)称为该用户的安全凭证。
当持有特定安全策略的安全标签的用户尝试访问同一安全策略的行安全标签所保
护的行,数据库服务器将该用户安全标签中值的集合与该行安全标签中值的集合
进行对比,来决定该用户是否该被允许访问该数据。类似地,在决定用户的凭证
是否该允许其访问受保护的列时,LBAC 考虑用户安全标签与列安全标签。
GRANT SECURITY LABEL 语句是 DBSECADM 将用户与安全标签相关联的机
制。通过仅 DBSECADM 可执行的 CREATE TABLE 或 ALTER TABLE 语句的
选项,受保护的表中的数据值与行安全标签或列安全标签相关联,而不是通过
GRANT SECURITY LABEL 语句)。
可跟在 TO 关键字之后的 USER 关键字是可选的,而且没有作用,但在
GRANT SECURITY LABEL 语句中指定的任何授权标识符都必须是单个用户的标
识符,而不是角色的标识符。
访问规范
授予其安全标签的用户列表可可选地后跟关键字,这些关键字指定对该标签的安
全策略保护的数据的访问类型

FOR WRITE ACCESS
这些关键字将标签限定为 IDSLBACRULES,即
IDLSBACWRITEARRAY、IDLSBACWRITESET 和
IDLSBACWRITETREE 的写访问规则。这些规则影响对受保护数据的
INSERT、DELETE 和 UPDATE 操作。

FOR READ ACCESS
这些关键字将标签限定为 IDSLBACRULES,即
IDLSBACWREADARRAY、IDLSBACREADSET 和
IDLSBACREADTREE 的读访问规则。这些规则影响对受保护数据的
SELECT、DELETE 和 UPDATE 操作。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 690

FOR ALL ACCESS
这些关键字将标签应用到上列所有读和写访问规则。如果 GRANT
SECURITY LABEL 语句不包括 FOR ... ACCESS 规范,则此选项作为缺
省项生效。
要获取更多关于这些基于标签的读和写访问的 IDSLBACRULES 规则的信息,请参
阅 与安全策略相关的规则。要获取关于可以为特定安全策略授予对这些规则的豁
免的信息,请参阅 授予豁免的规则。
如果授予用户的读访问安全标签与写访问安全标签不同,那么为这些安全标签组
件赋予的值必须服从下列这些规则:

对于类型 ARRAY 的安全标签组件,在两个安全标签中的值必须相同。

对于类型 SET 的安全标签组件,在用于 WRITE 访问的安全标签中给定
的值,必须是在用于 READ 访问的安全标签中给定值的子集。如果所有
的值相同,则视为子集,且是允许的。

对于类型 TREE 的安全标签组件,用于写访问的安全标签的树组件中的
每个元素,必须是用于读访问的安全标签的树组件中的一个元素或一个元
素的后代。
总之,当 DBSECADM 尝试将读访问的安全标签授予已持有写访问的安全标签的
用户时,或者反之,则读标签不可比写标签更具限制性。否则,GRANT
SECURITY LABEL 语句失败并报错。
对于同一安全策略,可将不多于两个标签授予用户。如果授予同一策略的两个标
签,则一个标签必须为读访问,且另一个为写访问。如果 DBSECADM 尝试将读
访问的安全标签授予用户,而该用户已持有基于同一安全策略的读访问的安全标
签,则 GRANT SECURITY LABEL 语句失败并报错。如果两个标签都是写访问
的且基于同一安全策略,则导致类似的失败。
在这两种情况下,在可将相同的访问模式和相同的安全策略授予第二个标签之
前,必须通过 REVOKE SECURITY LABEL 语句显式地取消第一个安全标签。此
规则的唯一例外情况是,如果两个标签都指定组件元素的同一个值。因为在此情
况下,两个标签在功能上相同,且不发生错误。
用户安全标签的规则
下列规则影响那些通过 GRANT SECURITY LABEL 语句授予用户的安全标签:

user 不可为发出此 GRANT SECURITY LABEL 语句的 DBSECADM。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 691

没有安全标签的用户有 NULL 或零标签。没有安全标签的用户不可访问
受保护表中的数据,除非该用户持有对该策略的必要的豁免。

在缺省情况下,受保护表的 IDSSECURITYLABEL 列不可有 NULL
值。没有安全标签的用户不可将数据插入到带有行保护的表内,即使该用
户已被授予了对该安全策略的必要的豁免,除非在 INSERT 语句中显式
地指定该行标签。要了解如何在 INSERT 语句中显式地指定安全标签,
请参阅 安全标签支持函数。

对下列数据库表类型,用户安全标签不起作用,因为这些表不可由安全策
略来保护:
o
“虚拟表接口”表,
o
带有“虚拟表接口”索引的表,
o
在类型表层级中的表,
o
临时表。
授予用户安全标签的示例
下列三个语句分别地创建三个名为 level、compartments 和 groups 的安全标签
组件:
CREATE SECURITY LABEL COMPONENT
level ARRAY ['TS','S','C','U'];

CREATE SECURITY LABEL COMPONENT
compartments SET {'A','B','C','D'};

CREATE SECURITY LABEL COMPONENT
groups TREE ('G1' ROOT,
'G2' UNDER ROOT,
'G3' UNDER ROOT);
下列语句基于上面三个组件创建名为 secPolicy 的安全策略:
CREATE SECURITY POLICY secPolicy COMPONENTS
level, compartments, groups;
下列语句创建名为 secLabel1 的安全标签:
CREATE SECURITY LABEL secPolicy.secLabel1

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 692
COMPONENT level 'S',
COMPONENT compartments 'A', 'B',
COMPONENT groups 'G2';
下列语句创建名为 secLabel2 的安全标签:
CREATE SECURITY LABEL secPolicy.secLabel2
COMPONENT level 'S',
COMPONENT compartments 'B',
COMPONENT groups 'G2';
下列语句创建名为 secLabel3 的安全标签:
CREATE SECURITY LABEL secPolicy.secLabel3
COMPONENT level 'S',
COMPONENT compartments 'A',
COMPONENT groups 'G3';
下列语句创建名为 secLabel4 的安全标签:
CREATE SECURITY LABEL secPolicy.secLabel4
COMPONENT level 'TS',
COMPONENT compartments 'A',
COMPONENT groups 'G1';
下列语句授予用户 sam 读访问的安全标签:
GRANT SECURITY LABEL secPolicy.secLabel1
TO sam FOR READ ACCESS;
下列语句授予用户 sam 写访问的安全标签。由于满足以上给出的规则,此语句成
功。
GRANT SECURITY LABEL secPolicy.secLabel2
TO sam FOR WRITE ACCESS;
下列语句授予用户 lynette 读访问的安全标签:
GRANT SECURITY LABEL secPolicy.secLabel1
TO lynette FOR READ ACCESS;
下列语句尝试授予用户 sam 写访问的安全标签。由于违反有关树组件的规则,此
语句失败。
GRANT SECURITY LABEL secPolicy.secLabel3
TO sam FOR WRITE ACCESS;

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 693
下列语句尝试授予用户 sam 写访问的安全标签。由于违反有关数组组件的规则,
此语句失败。
GRANT SECURITY LABEL secPolicy.secLabel4
TO sam FOR WRITE ACCESS;
当 GRANT SECURITY LABEL 语句成功地将安全标签授予用户时,数据库服务
器更新系统目录的 sysseclabelauth 表来注册该安全标签的新的持有者。
要了解 LBAC 安全对象的讨论,请参阅您的 GBase 8s 安全指南。
SETSESSIONAUTH 子句
GRANT SETSESSIONAUTH 语句将 SETSESSIONAUTH 权限授予一个或多个用
户或角色。此权限允许持有者使用 SET SESSION AUTHORIZATION 语句来设置
会话授权为 PUBLIC 或为指定用户的列表中的任一个。
SETSESSIONAUTH 子句

元素
描述
限制
语法
role
要授予其该权限的角色
必须为角色的授权
标识符
所有者名称
user
在 TO 关键字之后,要授予其
该权限的用户。在 ON 关键字
之后,表示可在 SET
AUTHORIZATION 语句中指定其
被授权者身份的用户。
必须为用户的授权
标识符
所有者名称
仅持有 DBSECADM 角色的用户可授予 SETSESSIONAUTH 权限。
SETSESSIONAUTH 权限和 DBA 权限都需要执行 SET AUTHORIZATION 语
句。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 694
跟在 ON 关键字之后的用户或 PUBLIC 规范指定在使用 SET SESSION
AUTHORIZATION 语句时,该 SETSESSIONAUTH 权限的被授予者可使用谁的
身份。此可为用户或 PUBLIC,但不可为角色。如果指定 PUBLIC,那么该权限
的被授予者可使用任何数据库用户的身份。
可跟在 TO 关键字之后的 USER 和 ROLE 关键字是可选的。user 或 role 都不
可为发出 GRANT SETSESSIONAUTH 语句的 DBSECADM 角色的持有者。
下列示例授予用户 sam 将会话授权设置为用户 lynette 和 manoj 的能力:
GRANT SETSESSIONAUTH ON lynette, manoj TO sam;
下一示例授予用户 lynette 将会话授权设置为 PUBLIC 的能力:
GRANT SETSESSIONAUTH ON PUBLIC TO lynette;
仅持有 DBSECADM 角色的用户可取消 SETSESSIONAUTH 权限。要了解
LBAC 安全对象的讨论,请参阅您的 GBase 8s 安全指南。
代理用户属性(UNIX™、Linux™)
使用 GRANT 语句的 ACCESS TO PROPERTIES 子句来将用户映射到访问
GBase 8s 资源所需要的代理用户属性。
注:
仅 DBSA 可外部地将认证的用户映射到有效的代理用户属性。如果
USERMAPPING 配置参数设置为启用支持被映射的用户,则 DBSA 发出
GRANT ACCESS TO PROPERTIES 语句来将用户映射到与适当的授权级别对应的
属性。
被映射的用户可以代理用户属性连接到 GBase 8s ,如果他们以可插拔的认证模
块(PAM)或单点登录(SSO)认证的话。
被映射的用户可以代理用户属性连接到 GBase 8s ,如果他们以可插拔的认证模
块(PAM)认证的话。
ACCESS TO PROPERTIES 子句

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 695

元素
描述
限制
语法
directory
存储用户文件的目录
的路径名称。
长度不超过 255 字节,且必
须符合您的操作系统的规则。
directory 还必须:

属于被映射的
user_ID 和 group_ID

有所有者的读、写和
执行许可

没有 PUBLIC 写许可
引用
字符

group_ID
您想要将 user 映射
到的组标识符编号。
group_id 值的列表
或您指定的值必须括
在括号中。
group_ID 不可为:

带有管理权限
(DBSA、DBSSO、
AAO 和
BARGROUP)的组
ID

组 0(root,有时称为
wheel 或 system)
精确
数值

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 696
元素
描述
限制
语法

与组 bin 或组 sys 关
联的组 ID
组 ID 必须在
/etc/gbasedbt/allowed.surrogates
文件中存在。
group_name
现有的操作系统组的
名称,该组有您想要
映射 user 到的许
可。group_name 值
的列表必须括在括号
中。
长度不可超过 32 字节。
组名必须在
/etc/gbasedbt/allowed.surrogates
文件中存在。
所有
者名

privilege
分配给 user 的管理
权限。有效值如下:

DBSA

DBSSO

AAO

BARGROUP
privilege 值或多个值
必须括在括号中。
USERMAPPING 配置参数必须设
置为 ADMIN 来以
AUTHORIZATION 关键字授予服
务器管理权限。
引用
字符

user
您正在映射到用户属
性的指定用户的授权
标识符。
必须为认证的授权标识符
所有
者名

user_ID
您想要将 user 映射
到的那个用户标识符
编号。
user_ID 不可为属于用户
root 或用户 gbasedbt 的用
户。
用户 ID 必须在
/etc/gbasedbt/allowed.surrogates
文件中存在。
精确
数值

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 697
元素
描述
限制
语法
OS_user_name GBase 8s 主计算机
上的现有的 OS 用户
账号的名称,有您想
要将 user 映射的许
可。
必须符合您的操作系统的规
则。
用户名必须在
/etc/gbasedbt/allowed.surrogates
文件中存在。
所有
者名

用法
最佳实践是将 user 映射到特定的 OS 用户名,保留该用户名仅作为代理用户身
份。您可以 GROUP 关键字添加与代理用户身份相关联的组,并以 HOME 关键
字更改 home 目录。如果操作系统管理员已在 /etc/gbasedbt/allowed.surrogates 文
件中指定了可接受的代理,则您仅可将用户映射到指定的 OS 用户或组。
如果您将 user 映射到用户 ID 编号,那么请记住不要以相同的编号在 GBase 8s
主计算机上创建用户账号。
USERMAPPING 配置参数必须设置为 ADMIN,以便以 ADMINISTRATOR 关键
字分配 user 一服务器管理权限。
注:
不推荐使用此 AUTHORIZATION 子句(以及 ALTER USER、CREATE USER
或 CREATE DEFAULT USER 语句的 AUTHORIZATION 子句)。不同的语法将
在未来的版本中支持角色分离。
不可在同一语句中同时使用 PUBLIC 与 AUTHORIZATION 关键字,因为不可
将服务器管理员权限授予 PUBLIC 组。
以 HOME 关键字指定用户文件的目录是可选的,但在有些情况下,强烈建议这
样做。当将一个在外部认证了的用户映射到代理用户名,但未在 GRANT
ACCESS TO 语句中指定 HOME 目录时,被映射的用户与 GBase 8s 主计算机上
的用户账户有相同的 home 目录。当以不设置 home 目录的方式将用户映射到代
理用户身份时,则 GBase 8s 在 $GBASEDBTDIR/users 中为用户文件创建目录。
在后面这种情况下,$GBASEDBTDIR/users 中的目录名称采用 uid.ID_number 的
形式(例如,uid.101)。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 698
示例
此章节中的语法和解释是对下列环境的示例,此处的缩写词 GID 是 组 ID 编号
的缩写,缩写词 UID 是 用户 ID 编号 的缩写:

在 GBase 8s 主计算机上,有一个有 OS 账号的用户 fred。用户 fred
以 UID 3000、GID 3000(users)、辅助组 200(staff) 和 home 目录
/home/fred 访问数据库服务器。

在同一台计算机上,存在用户 dbuser 的 OS 账户。此账户被锁定,因
此 dbuser 不可登录。dbuser 仅为了代理用户映射的目的而存在,有
UID 3050、GID 4000(ifx_user)和 home 目录 /home/dbuser。

组 ifx_user 有 GID 4000,包括用户 bill 和 eileen。

建立被映射的用户的管理员知道,在 /etc/passwd (或其同义词)中没有
UID 101 的条目,且在 /etc/group(或其同义词)中没有 GID 10011 或
10101 的条目。

用户 bob 在 GBase 8s 主计算机上没有 OS 账户,但可通过 PAM 或
LDAP 认证。配置数据库服务器来通过 PAM 或 LDAP 模块接受认证。

onconfig 文件中的 USERMAPPING 参数设置为 ADMIN。
将在外部认证了的用户映射到代理用户名称:
管理员通过发出下列 GRANT 语句将 bob 映射到用户 fred 已经存在的数据库
服务器访问权限:
GRANT ACCESS TO bob PROPERTIES USER fred;
将 GBase 8s 访问授予所有在外部认证了的用户:
在此环境中, GBase 8s 主计算机上的用户 dbuser 账户的目的是将数据库服务器
访问授权给被映射的用户。有这么一种情况,有许多被映射的用户且他们不需要
知道在 home 目录中创建的用户文件,管理员可能发现将 PUBLIC 映射到
dbuser 代理用户身份非常高效且足够安全。管理员可以下列 GRANT ACCESS
语句,将所有认证了的用户(PUBLIC)映射到为 dbuser 建立的权限:
GRANT ACCESS TO PUBLIC PROPERTIES USER dbuser;
注: 将 PUBLIC 映射到代理用户身份是为某些被映射的用户设计的,这些用户不
创建或不关注 home 目录上的用户文件,诸如在零售 Web 网站上访问 GBase 8s
数据库的顾客。如果您想要将像 dbuser 这样关注数据库服务器功能的用户映射

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 699
到代理用户身份, 则推荐以指定的 home 目录分别地映射这些用户,如下例所
示:
GRANT ACCESS TO bob PROPERTIES USER dbuser HOME "/home/dbuser/bob";
将在外部认证了的用户映射到 UID-GID 对:
管理员将 bob 映射到代理用户身份,由一个通过运行下列语句启用数据库服务器
访问的 UID-GID 对构成:
GRANT ACCESS TO bob PROPERTIES UID 101, GROUP (10011);
因为未指定特定的目录,所以以名称 uid.101 创建 $GBASEDBTDIR/users 之下
的目录,且此路径将被用作 home 目录。UID 101 和 GROUP (10011) 是匿名
的,因为在各自的 /etc 目录中没有条目指定可访问 GBase 8s 的 UID 和 GID。
抑或,管理员可将 bob 映射到代理用户身份,这是一匿名 UID 和一显式组的综
合体,如下例所示:
GRANT ACCESS TO bob PROPERTIES 101, GROUP (ifx_user);
由于 ifx_user 组包括成员 bill 和 eileen,所以该组不是匿名的。
将在外部认证了的用户映射到有服务器管理权限的代理用户身份:
在下列示例中,管理员将 DBSA 权限授予 bob:
GRANT ACCESS TO bob PROPERTIES USER fred, GROUP (ifx_user),
AUTHORIZATION (dbsa);
将 UID 3000(fred)和 GID 3000(users)、200(staff)和额外的组 1000
(ifx_user)分配给用户 bob。通过以不同的权限(DBSSO、AAO 或
BARGROUP)取代 dbsa,授予 bob 的管理角色可能不同。如果在 onconfig
文件中将 USERMAPPING 参数设置为 BASIC,那么通过此语句可能不将 DBSA
权限授予 bob。如果 USERMAPPING 设置为 OFF,那么 bob 可能根本不能连
接到该数据库服务器。
示例
下列 GRANT 语句是有效的 ACCESS TO PROPERTIES 子句的示例,使用假定
的值。这些示例未表现 ACCESS TO PROPERTIES 子句的完整语法和可能的语
义。

GRANT ACCESS TO bob PROPERTIES USER fred;

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 700

GRANT ACCESS TO PUBLIC PROPERTIES USER dbuser;

GRANT ACCESS TO bob PROPERTIES USER dbuser HOME
"/home/dbuser/bob";

GRANT ACCESS TO bob PROPERTIES UID 101, GROUP
(10011);

GRANT ACCESS TO bob PROPERTIES 101, GROUP (ifx_user);

GRANT ACCESS TO bob PROPERTIES USER fred, GROUP
(ifx_user), AUTHORIZATION (DBSA);

整数类型。INTEGER 的同义词。
它的范围是-2147483647 到2147483647,INT 占用
4 个字节。