首页 > 数据库 >KingbaseES数据库权限简写说明

KingbaseES数据库权限简写说明

时间:2024-04-03 17:13:34浏览次数:18  
标签:简写 角色 数据库 ALTER user table 权限 KingbaseES 所有者

前言

为了方便,我们测试环境经常使用system用户执行测试,它拥有最高权限。

角色基本上是用户和组的概念。你可以以角色身份登录,并且一个角色可以属于另一个角色。每个角色都有一个类似的属性,指示你是否可以作为该角色登录,以及该角色是否从所属角色继承权限。你可以使用命令将角色添加到另一个角色的成员中。

一个KES数据库实例可以拥有多个数据库。一个数据库可以拥有多个模式。一个模式可以拥有多个表。

对象所有者

每个对象都有一个名为“所有者”的特殊角色。只有所有者才能执行某些操作,如 ALTER TABLE ,而不能将 GRANT 这样的权限授予非所有者。
a
你可能希望为一个对象分配两个以上的所有者。假设你有两个角色, app_user 和 sre_user ,你希望这两个用户都能运行 ALTER TABLE 命令,而只有所有者才能做到。由于每个对象只能有一个所有者,你不能直接让这两个用户都成为所有者。

你可以使用角色继承来解决此问题。创建 table_owner 角色和 GRANT table_owner TO app_user, sre_user ,然后像 ALTER TABLE my_table OWNER TO table_owner 那样转移所有者角色权限。现在表的所有者是 table_owner ,但是因为 app_user 和 sre_user 是该角色的成员,所以他们也具有继承权限来运行 ALTER TABLE 。

默认权限

当创建一个对象时,开始时只有所有者可以访问该对象。例如,如果你创建了一个新表,只有你可以访问该表,你需要单独向其他角色授权。这很麻烦,你每次创建新表时都需要这样做。有一个默认权限功能,允许你配置新创建的对象的默认权限。

假设你想要为数据库和模式下的所有新表默认分配只读权限给一个只读角色。但如果你想要将其限制在某个特定数据库,就不能使用这个角色。我们将通过使用默认权限为 ro_user 角色提供只读权限。

对于已创建的表,我们可以运行 GRANT SELECT ON ALL TABLES IN SCHEMA public TO ro_user 。这将为现有表 SELECT 权限。然而,我们希望将此权限授予将来创建的表。为了实现这一点, ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO ro_user 。这将改变默认权限。

请注意,这些默认权限仅在授权者创建新表时应用。例如,假设我们有两个所有者角色 table_owner1 和 table_owner2 。 table_owner1 发出 ALTER DEFAULT PRIVILEGES ... ,而另一个则没有默认权限。在这种情况下,发出的 ALTER DEFAULT PRIVILEGES 仅与 table_owner1 相关,并且仅在 table_owner1 创建新表时应用。即使 table_owner2 创建了一个新表,它也不会拥有由 table_owner1 定义的默认权限。

查看当前的ACL

通过使用 GRANT 和 REVOKE 命令,你可以修改ACL,但是我们如何查看当前的ACL呢?如果你使用 ksql 命令行界面,如下表,有一些命令行内部命令可以显示它们:

每个 ACL 条目都以缩写形式显示,看起来像arwdDxt. 每个特权都缩短为一个字符。例如rarwdDxtisSELECTwis 中INSERT。如下,可看到映射关系。

以下是一些权限查询的示例语句:

Object type Query
DATABASE SELECT datname, sys_catalog.sys_get_userbyid(datdba), datacl FROM sys_database;
SCHEMA SELECT nspname, sys_catalog.sys_get_userbyid(nspowner), nspacl FROM sys_namespace;
TABLE SELECT relname, relacl FROM sys_class WHERE relacl IS NOT NULL ;

标签:简写,角色,数据库,ALTER,user,table,权限,KingbaseES,所有者
From: https://www.cnblogs.com/kingbase/p/17921567.html

相关文章

  • KingbaseES复制冲突中谁阻塞walreplay
    背景回顾一下流复制冲突相关参数:hot_standby_feedback:从库反馈给主库快照,主库vacuum时不回收最老快照之后产生的垃圾,注:备库长查询将导致主库表膨胀。vacuum_defer_cleanup_age:当触发vacuum时,延迟指定事务后触发。recovery_min_apply_delay:如果将此参数设置为5分钟,则只......
  • KingbaseES 数据库创建索引慢的可能原因
    1.表大小如果表太大,数据很多,索引创建的时候,会导致创建索引的时间很慢。如果表很大,可以考虑重新设计表结构或拆分表。还可以考虑使用分区表,使子分区的数据减少,创建分区表也可以使索引变小,增加索引创建速度,有助于查询效率。2.索引类型不同类型的索引建立的速度可能会有所不同,因......
  • KingbaseES 数据库IO优化方向总结
    前言数据库中的IO性能是优化中的重中之重,根据木桶原理,解决了IO这个最容易引起业务堵塞的问题,就能解决绝大部分性能问题。下面从几个方面总结一下I/O优化问题。第一,使用相对速度快的高性能存储设备。一般会考虑使用固态硬盘(SSD)或RAID阵列以获得更快的读写速度。高性能低......
  • Python访问mysql与sqlite3数据库
    在Python中,数据库访问是一个常见的需求,无论是在Web开发还是数据分析中都非常重要。Python提供了多种数据库访问库,使得与不同类型的数据库进行交互变得简单。在这篇博客中,我们将介绍如何使用Python进行数据库访问操作,并提供一些代码示例。Python数据库访问概述Python中的数据......
  • 03 MySQL数据库的基本操作-DDL
    DDL(DataDefinitionLanguage),数据定义语言,该语言部分包括以下内容对数据库的常用操作对表结构的常用操作修改表结构可以在命令行里面进行如下的操作;也可以在Navicat图形化工具中操作创建数据库createdatabase数据库名[库选项]例如:createdatabase数据库......
  • SpringBoot集成Flink-CDC,实现对数据库数据的监听
    一、什么是CDC?  CDC是 ChangeDataCapture(变更数据获取) 的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。二、Flink-CDC是什么?CDCConnector......
  • idea从零到精通07之idea数据库管理,作为移动开发程序员
    作者简介引言导航热门专栏推荐视频讲解概述一、打开Database管理界面二、配置数据库连接三、在图形化界面操作四、在控制台查询五、在控制台执行操作六、数据导出方法1,直接在结果控制台导出方法2,在Database管理区中导出七、数据结果的多种展示......
  • MySQL数据库:第十六章:sql高级函数,和腾讯大牛的技术面谈
    CURDATE()或CURRENT_DATE()返回当前的日期CURTIME()或CURRENT_TIME()返回当前的时间DATE_ADD(date,INTERVALintkeyword)返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECTDATE_ADD(CURRENT_DATE,INTERVAL6MONTH);DATE_FORMAT(date,fmt......
  • 【数据库】数据库系列学习4:数据库学习路径
    学习数据库的路径可以分为以下几个阶段,每个阶段都有不同的学习内容和建议:1.初级阶段1.1理论基础学习关系型数据库的基本概念,如表、行、列、键等。了解SQL语言的基本语法和常用操作,包括创建表、插入数据、查询数据、更新数据、删除数据等。1.2实践操作安装并使用一款关......
  • Gbase8s数据库保姆级安装部署(RHAC和SSC) 三
    一、RHAC集群的安装部署(一)RHAC集群的介绍和环境检查1.RHAC和HAC集群的比较    RHAC集群是gbase8s数据库双机同步的一种方式,其和HAC集群在安装部署上的步骤大部分是相同的(环境准备、软件安装、实例初始化、数据同步),而且其和HAC集群的同步方式也是一样的,只有在主机和......