南大通用GBase 8c SQL语法之权限管理

摘要:权限管理是数据库系统确保数据安全和完整性的关键环节。南大通用GBase 8c提供全面的权限管理机制,以支持复杂的数据访问控制需求。本文将深入探讨GBase 8c的权限说明,包括其默认权限机制、用户权限设置以及行级访问控制的实现原理与应用,旨在帮助读者全面理解并

权限管理是数据库系统确保数据安全和完整性的关键环节。南大通用GBase 8c提供全面的权限管理机制,以支持复杂的数据访问控制需求。本文将深入探讨GBase 8c的权限说明,包括其默认权限机制、用户权限设置以及行级访问控制的实现原理与应用,旨在帮助读者全面理解并掌握GBase 8c在权限管理方面的强大功能。

数据库对象创建后,进行对象创建的用户就是该对象的所有者。数据库安装后的默认情况下,未开启三权分立,数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,以及通过GRANT将对象的权限授予其他用户。为使其他用户能够使用对象,必须向用户或包含该用户的角色授予必要的权限。

要撤销已经授予的权限,可以使用REVOKE。对象所有者的权限(例如ALTER、 DROP、COMMENT、INDEX、VACUUM、GRANT和REVOKE)是隐式拥有的,即只要拥有对象就可以执行对象所有者的这些隐式权限。对象所有者可以撤销自己的普通权限,例如,使表对自己以及其他人只读,系统管理员用户除外。

GBase 8c支持以下的权限,不同的权限与不同的对象类型关联:

SELECT:允许对指定的表、视图、序列执行SELECT命令,UPDATE或DELETE时也需要对应字段上的SELECT权限。

INSERT:允许对指定的表执行INSERT命令。

UPDATE:允许对声明的表中任意字段执行UPDATE命令。通常,UPDATE命令也需要SELECT权限来查询出哪些行需要更新。SELECT… FOR UPDATE、SELECT… FOR NO KEY UPDATE、SELECT… FOR SHARE和SELECT… FOR KEY SHARE除了需要SELECT权限外,还需要UPDATE权限。

DELETE:允许执行DELETE命令删除指定表中的数据。通常,DELETE命令也需要SELECT权限来查询出哪些行需要删除。

TRUNCATE:允许执行TRUNCATE命令删除指定表中的所有记录。

REFERENCES:创建一个外键约束,必须拥有参考表和被参考表的REFERENCES权限。

CREATE:

对于数据库,允许在数据库里创建新的模式。

对于模式,允许在模式中创建新的对象。如果要重命名一个对象,用户除了必须是该对象的所有者外,还必须拥有该对象所在模式的CREATE权限。

对于表空间,允许在表空间中创建表,允许在创建数据库和模式的时候把该表空间指定为缺省表空间。

CONNECT:允许用户连接到指定的数据库。

EXECUTE:允许使用指定的函数,以及利用这些函数实现的操作符。

USAGE:

对于过程语言,允许用户在创建函数的时候指定过程语言。

对于模式,USAGE允许访问包含在指定模式中的对象,若没有该权限,则只能看到这些对象的名称。

对于序列,USAGE允许使用nextval函数。

对于Data Source对象,USAGE是指访问权限,也是可赋予的所有权限,即USAGE与ALL PRIVILEGES等价。

ALTER:允许用户修改指定对象的属性,但不包括修改对象的所有者和修改对象所在的模式。

DROP:允许用户删除指定的对象。

COMMENT:允许用户定义或修改指定对象的注释。

INDEX:允许用户在指定表上创建索引,并管理指定表上的索引,还允许用户对指定表执行REINDEX和CLUSTER操作。

VACUUM:允许用户对指定的表执行ANALYZE和VACUUM操作。

ALL PRIVILEGES:一次性给指定用户/角色赋予所有可赋予的权限。只有系统管理员有权执行GRANT ALL PRIVILEGES。

2、语法格式

2.1、GRANT

对角色和用户进行授权操作,需要使用GRANT命令。用户授权包括三种场景:

(1)将系统权限(例如sysadmin、CREATEDB、CREATEROLE等)授权给角色或用户

将sysadmin权限赋予指定的角色的语法如下:

GRANT ALL { PRIVILEGES | PRIVILEGE } TO role_name;

(2)将角色或用户的权限授权给其他角色或用户

将角色的权限赋予其他用户或角色的语法如下。

GRANT role_name [, ...] TO role_name [, ...] [ WITH ADMIN OPTION ];

(3)将数据库对象授权给角色或用户

将表或视图的访问权限赋予指定的用户或角色。

GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ];

将表中字段的访问权限赋予指定的用户或角色。

GRANT { {{ SELECT | INSERT | UPDATE | REFERENCES | COMMENT } ( column_name [, ...] )} [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) } ON [ TABLE ] table_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...][ WITH GRANT OPTION ];

将数据库的访问权限赋予指定的用户或角色。

GRANT { { CREATE | CONNECT | TEMPORARY | TEMP | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON DATABASE database_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...][ WITH GRANT OPTION ];

将模式的访问权限赋予指定的用户或角色。

GRANT { { CREATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...][ WITH GRANT OPTION ];

将表空间的访问权限赋予指定的用户或角色。

GRANT { { CREATE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON TABLESPACE tablespace_name [, ...] TO { [ GROUP ] role_name | PUBLIC } [, ...][ WITH GRANT OPTION ];

2.2、REVOKE

撤销角色或用户的系统权限(例如sysadmin、CREATEDB、CREATEROLE等),需要使用REVOKE命令。

(1)回收角色上的sysadmin权限。

REVOKE ALL { PRIVILEGES | PRIVILEGE } FROM role_name;

(2)回收角色上的权限。

REVOKE [ ADMIN OPTION FOR ] role_name [, ...] FROM role_name [, ...][ CASCADE | RESTRICT ];

(3)回收数据库对象上的权限

回收指定表或视图上权限。

REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM }[, ...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } FROM { [ GROUP ] role_name | PUBLIC } [, ...][ CASCADE | RESTRICT ];

回收指定数据库上权限。

REVOKE [ GRANT OPTION FOR ] { { CREATE | CONNECT | TEMPORARY | TEMP | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON DATABASE database_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...][ CASCADE | RESTRICT ];

回收指定表空间上权限。

REVOKE [ GRANT OPTION FOR ] { { CREATE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON TABLESPACE tablespace_name [, ...] FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ];

南大通用GBase 8c数据库的权限管理机制包括默认权限、用户权限设置以及行级访问控制。GBase 8c在数据安全和权限管理方面具有极强优势,为企业在现代数据应用转型提供强有力的支撑。

来源:勇往直前加油

相关推荐