目标库为GaussDB,迁移用户为普通用户或三权分立下的SYSADMIN用户时,展示此检查项,该权限较为复杂,涉及权限的组合。
在较低版本的GaussDB中(GaussDB 2.7及以下),需要拥有public Schema的CREATE权限,才可以创建表、视图、索引、序列、PACKAGE、类型、触发器等对象。
在较新版本的GaussDB中(GaussDB 3.1及以上),开启三权分立的SYSADMIN用户需要拥有public Schema的CREATE权限,才可以创建表、视图、索引、序列、PACKAGE、类型、触发器等对象。
在较新版本的GaussDB中(GaussDB 3.1及以上),普通用户需要拥有public Schema的CREATE权限,以及对象对应的 ANY 权限,如创建表或视图需要CREATE ANY TABLE权限、创建索引的CREATE ANY INDEX权限、创建序列的CREATE ANY SEQUENCE权限、创建PACKAGE的CREATE ANY PACKAGE权限、创建类型的CREATE ANY TYPE权限、创建触发器的CREATE ANY TYPE权限。
在三权分立的情况下,只有初始用户有权限在public Schema下创建函数、存储过程、同义词。
在非三权分立的情况下,只有初始用户和sysadmin用户有权限在public Schema下创建函数、存储过程、同义词。
public Schema的CREATE权限赋权语句:GRANT CREATE ON SCHEMA public TO <user>;
ANY权限赋权语句:
GRANT CREATE ANY TABLE TO <user>;//用户能够在public模式和用户模式下创建表或视图。
GRANT CREATE ANY SEQUENCE TO <user>;//用户能够在public模式和用户模式下创建序列。
GRANT CREATE ANY INDEX TO <user>;//用户能够在public模式和用户模式下创建索引。
GRANT CREATE ANY PACKAGE TO <user>;//用户能够在public模式和用户模式下创建PACKAGE。
GRANT CREATE ANY TYPE TO <user>;//用户能够在public模式和用户模式下创建类型。
GRANT CREATE ANY TRIGGER TO <user>;//用户能够在public模式和用户模式下创建触发器。
- 数据库实例会包含多个数据库,每个数据库都有自己的public Schema,赋权的时候需要在对应的数据库内执行。
- 在开启三权分立时,可使用初始用户赋权;关闭三权分立时,可使用SYSADMIN用户赋权。
- 此检查项为非强制检查项,基于GaussDB的权限设计,检查结果固定为警告。