GBase 8c
其他
文章

GBase 8c 数据定义-权限(一)

发表于2023-12-11 09:27:2915次浏览0个评论

在GBase 8c 数据库中,被创建的数据库对象都会分配一个所有者。所有者通常是执行创建语句的角色。对于大部分类型的对象,初始状态下只有所有者(或者超级用户)能够对该对象做任何操作。为了允许其他角色使用它,必须分配权限。
 

 

    有多种不同的权限:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER、CREATE、CONNECT、TEMPORARY、EXECUTE以及USAGE。可以应用于一个特定对象的权限随着对象的类型(表、函数等)而不同。有关这些权限含义的更多详细信息请参阅下文。后续的章节将介绍如何使用这些权限。

    修改或销毁一个对象的权力通常是只有所有者才有的权限。

    一个对象可以通过该对象类型相应的ALTER命令来重新分配所有者,例如

ALTER TABLE table_name OWNER TO new_owner;

    超级用户总是可以做到这点,普通角色只有同时是对象的当前所有者(或者是拥有角色的一个成员)以及新拥有角色的一个成员时才能做同样的事。
 

 

    要分配权限,可以使用GRANT命令。例如,如果joe是一个已有角色,而accounts是一个已有表,更新该表的权限可以按如下方式授权:

GRANT UPDATE ON accounts TO joe;

    用ALL取代特定权限会把与对象类型相关的所有权限全部授权。
 

 

    一个特殊的名为PUBLIC的“角色”可以用来向系统中的每一个角色授予一个权限。同时,在数据库中有很多用户时可以设置“组”角色来帮助管理权限。详见第 21 章。

    为了撤销一个权限,使用REVOKE 命令:

REVOKE ALL ON accounts FROM PUBLIC;

    对象拥有者的特殊权限(即执行DROP、GRANT、REVOKE等的权力)总是隐式地属于拥有者,并且不能被授予或撤销。但是对象拥有者可以选择撤销他们自己的普通权限,例如把一个表变得对他们自己和其他人只读。
 

 

    一般情况下,只有对象拥有者(或者超级用户)可以授予或撤销一个对象上的权限。但是可以在授予权限时使用“with grant option”来允许接收人将权限转授给其他人。如果后来授予选项被撤销,则所有从接收人那里获得的权限(直接或者通过授权链获得)都将被撤销。

评论

登录后才可以发表评论