首页 > 其他分享 >KingbaseES 普通用户逻辑导入时权限不足错误

KingbaseES 普通用户逻辑导入时权限不足错误

时间:2024-03-29 18:45:50浏览次数:12  
标签:SET user1 s1 system 权限 导入 普通用户 KingbaseES ALTER

逻辑导入时权限报错:

ERROR: must be member of role "system"

实验:

1、在超级用户system下新建用户与schema:

create user user1;
create schema s1;

修改user1的默认权限:

test=# alter default privileges in schema s1 grant all on tables to user1;
ALTER DEFAULT PRIVILEGES
test=#
test=# select * from sys_default_acl;
oid | defaclrole | defaclnamespace | defaclobjtype | defaclacl
-------+------------+-----------------+---------------+------------------------
24595 | 10 | 24594 | r | {user1=arwdDxt/system}
(1 row)

2、使用普通用户user1备份

sys_dump -dtest -Uuser1 -Fp -f 1.sql -ns1

导出文件内容查看:schema:s1对应的owner是system用户,我在前面的ksql端只执行了alter default privileges修改默认权限一条命令,而在导出语句里有两条ALTER DEFAULT PRIVILEGES命令,这个逻辑如下,数据库需要先回收system用户访问schema s1中所有表的默认权限,再授予user1用户访问schema s1中所有表的权限
-- Name: s1; Type: SCHEMA; Schema: -; Owner: system

CREATE SCHEMA s1;

ALTER SCHEMA s1 OWNER TO system;

-- Name: DEFAULT PRIVILEGES FOR TABLES; Type: DEFAULT ACL; Schema: s1; Owner: system

ALTER DEFAULT PRIVILEGES FOR ROLE system IN SCHEMA s1 REVOKE ALL ON TABLES FROM system;
ALTER DEFAULT PRIVILEGES FOR ROLE system IN SCHEMA s1 GRANT ALL ON TABLES TO user1;

-- Kingbase database dump complete

3、如下,使用user1还原,报错的原因是user1用户导入权限有限,无法修改系统默认权限,需要授予给他system的member成员身份,或直接用system用户导入。

[kingbase5@ppo ~]$ ksql -dtest -Uuser1 -f 1.sql
SET
SET
SET
SET
SET
set_config


public
(1 row)

SET
SET
SET
SET
SET
ksql:1.sql:24: ERROR: permission denied for database test
ALTER SCHEMA
ksql:1.sql:33: ERROR: must be member of role "system"
ksql:1.sql:34: ERROR: must be member of role "system"

解决:

1、使用超级用户(system)备份还原(建议使用)
2、跳过权限不备份权限,
3、使用普通用户备份还原,需要将超级用户加入到普通用户的成员里面(例如:grant system to user1)

标签:SET,user1,s1,system,权限,导入,普通用户,KingbaseES,ALTER
From: https://www.cnblogs.com/kingbase/p/17921605.html

相关文章

  • KingbaseES V8R3集群运维案例之---集群启动“DATA_SIZE_DIFF 16 (MB)”故障
    案例说明:为保证集群数据的一致性安全,在主备库的数据相差“DATA_SIZE_DIFF>=16M"以上时,该备库不能参与主备切换,并且通过kingbase_monitor.sh启动集群时,集群将无法启动;本案例对此种故障做了复现,并测试了解决方法。适用版本:KingbaseESV8R3适用版本:KingbaseESV8R3一、案例......
  • KingbaseES V8R3备份恢复案例之---backup_label does not exist in KINGBASE_DATA
    案例说明:在KingbaseESV8R3集群主库执行sys_rman的全备时,出现‘backup_labeldoesnotexistinKINGBASE_DATA’的故障,如下图所示:适用版本:KingbaseESV8R3一、问题现象如下所示,数据库执行sys_rman物理备份:[kingbase@node201bin]$./sys_rman-Usystem-W123456-dtes......
  • KingbaseES集群运维案例之-- V8R3与V8R6集群wal函数应用
    案例说明:KingbaseESV8R3和V8R6集群在通过函数获取wal日志的相关信息时,两个版本的函数名称不同,本案例做了函数应用的对比和总结。适用版本:KingbaseESV8R3/R6一、KingbaseESV8R3相关函数Tips:在V8R3的版本,事务日志名称为xlog。1、查询数据库支持的函数test=#selectpron......
  • kingbaseES V8R6集群运维案例之---配置priority防止failover切换案例
    案例说明:在一主多备的架构中,需要配置一台备库在主备切换时,不能选举为主库。对于repmgr主备切换主库的选择算法如下:Tips:Repmgr选举候选备节点会以以下顺序选举:LSN---->Priority---->Node_ID。系统会先选举一个LSN比较大者作为候选备节点;如LSN一样,会根据Priority优先级进行比......
  • KingbaseES V8R6集群运维案例之---级联备库upstream节点故障
    KingbaseESV8R6集群运维案例之---级联备库upstream节点故障案例说明:在KingbaseESV8R6集群,构建级联备库后,在其upstream的节点故障后,级联备库如何处理?适用版本:KingbaseESV8R6集群架构:案例一:一、配置集群的recovery参数(allnodes)Tips:关闭备库的aut-recovery机制......
  • ArcMap连接SQL Server2014与导入数据
    打开SOLServer2014ManagementStudio鼠标右键当前实例【属性】,查看并复制当前实例【名称】。在ArcMap的【目录】窗口中展开【数据库连接】,鼠标双击【添加数据库连接】,弹出【数据库连接】对话框【数据库平台】选择SQLServer,【实例】文本框中输入步骤1中获得的......
  • Python机器学习从入门到高级:导入数据(包含数据库连接)
    python数据科学系列https://developer.aliyun.com/article/1174199 ......
  • 思科交换机导入配置后无法正常启动
    将配置导入设备后(没进行showboot查看)无法启动Console口接入回显:switch:在此输入bootflash:/packages.conf这条命令switch:bootflash:/packages.conf加载成功后,输入console密码,enable密码,输入bootsystemflash:/packages.confshowrun查看一下,......
  • Docker镜像批量导出和导入脚本
    批量导出#!/bin/bash#设置导出镜像的目录EXPORT_DIR="/root/images"#确保导出目录存在mkdir-p"$EXPORT_DIR"#获取所有的镜像并导出IMAGES=$(dockerimages--format'{{.Repository}}:{{.Tag}}')#遍历所有的镜像forIMAGEin$IMAGES;......
  • KingbaseES生成动态SQL
    1.动态SQL动态SQL在程序启动时会根据输入参数替换相应变量。使用动态SQL可以创建更强大和灵活的应用程序,但在编译时SQL语句的全文不确定,因此运行时编译会牺牲一些性能。动态SQL可以是代码或SQL语句的一部分,动态部分要么由开发人员输入,要么由程序本身创建。1.1动态SQL使用场景......