人大金仓KCA | 对象访问权限入门

人大金仓KCA | 对象访问权限入门

  • 一、知识预备
    • 1. 对象的分类
    • 2. 对象访问权限概述
    • 3. 级联授权
    • 4. 权限描述符
    • 5. 使用EasyKStudio查看用户权限
  • 二、案例实施
    • 1. 用户授权综合案例
    • 2. 对象的创建者默认就是对象的所属主
    • 3. 该表对象的所属主
    • 4. 对象属主的权限设置
    • 5. 授权普通用户访问对象
    • 6. public角色

OS版本:CentOS-7-x86_64-Everything-2009
KES版本:KingbaseES_V008R006C008B0014_Lin64
许可证版本:license_39893_0.dat(开发版)

一、知识预备

1. 对象的分类

数据库的表、索引、视图、缺省值、规则、触发器等都称为数据库对象,对象分为两类:

  • 模式对象:可以理解为一个存储目录,包含视图、索引、数据类型、函数和操作符等
  • 非模式对象:其它的数据库对象,如数据库、表空间、用户

2. 对象访问权限概述

  • 对象都会有一个所有者,所有者一般是对象的创建者,所有者也可以被改变,类似于Linux中的文件权限。
  • 初始状态下,只有所有者和超级用户能够对该对象执行任何操作
  • 其它用户和角色要使用该对象,必须显式的为其授予访问该对象的相关权限
  • 不同的对象类型所支持权限类似是不一样的

3. 级联授权

数据库中的级联授权(Cascading Authorization)是一种权限传递机制,它允许一个用户(或角色)将其所拥有的权限授予另一个用户(或角色),并且这种授权关系可以逐级传递下去。
在这里插入图片描述

4. 权限描述符

在KES中制定了一种类似于Linux权限掩码的权限描述符,在查询相关对象的权限时,仅显式权限描述符,减少打印空间。

常见权限描述符

权限描述符完整单词针对对象说明
aINSERT针对表或视图插入
wUPDATE针对表或视图更新
DTRUNCATE针对表清空记录
tTRIGGER针对表创建触发器
UUSAGE针对模式使用权
cCONNECT针对数据库创建连接
rSELECT针对表或视图查询
dDELETE针对表或视图参照引用
xREFERENCES针对表删除
XEXECUTE针对存储过程执行
CCREATE针对模式或数据库创建对象
TTEMPORARY针对数据库创建临时表

查看student表中各用户拥有的权限

\dp student

在这里插入图片描述

具体权限说明

system=arwdDxt/system+
  • 语法格式:[ 被授权用户 ]=权限明细[ * ]/授权用户
  • system:代表被授权的用户
  • arwdDxt:具体权限明细
  • /system:被授权的用户
  • +:类似于间隔符
user01=ar*/system
  • user01:被授权的用户
  • ar:代表insert和select权限
  • r*:代表user01可以向其它用户授予select权限
  • /system:代表是system用户向user01用户授予的权限

5. 使用EasyKStudio查看用户权限

[Step1]: 通过编辑用户,可以查看用户对数据库的权限

权限说明
ALL授予所有权限
CREATE允许创建表、模式、索引
TEMPORARY允许创建临时表
TEMP允许创建临时表
CONNECT允许连接数据库

在这里插入图片描述

[Step2]: 通过编辑用户,可以查看用户对模式的权限

权限说明
ALL授予全部权限
USAGE允许访问指定模式中的对象,如果是序列则允许使用currval和nextval函数
CREATE允许在模式中创建对象

在这里插入图片描述

[Step3]: 通过编辑用户,可以查看用户对指定表的权限

权限说明
ALL授予全部权限
SELECT授予读取权限
INSERT授予插入权限
UPDATE授予更新权限
DELETE授予删除权限
TRUNCATE允许对表进行截断清空
REFERENCES允许创建外键约束
TRIGGER允许在表上创建触发器

在这里插入图片描述

二、案例实施

1. 用户授权综合案例

  • 使用 system 用户登录 test 数据库
  • 创建 user01 用户,在public模式下创建 tb01 表
  • 向 tb01 表中插入数据,授予 user01 用户可查询 tb01 表
  • 授予 user01 用户拥有对 tb01 表的查询转授权限
  • 授予 user01 用户可以在 tb01 表中插入数据

[Step1]: 使用system用户登录test数据库

ksql -Usystem -d test

[Step2]: 创建user01用户,新建tb01表

create user user01 password 'kingbase';
create table tb01 (id int,name varchar(100));

[Step3]: 往tb01表中插入数据

insert into tb01 values(1001,'Mike'),(1002,'Jack');

[Step4]: 授予user01用户查询和转授权限,授予user01用户插入权限

grant select on public.tb01 to user01 with grant option;
grant insert on public.tb01 to user01;

[Step5]: 验证:查看tb01表中所有用户权限

\dp tb01

在这里插入图片描述

2. 对象的创建者默认就是对象的所属主

[Step1]: 使用 system 用户创建 tb02 表

create table tb02 (id int,name varchar(10));
\dt tb02

在这里插入图片描述

3. 该表对象的所属主

[Step1]: 修改 tb02 的所属主为 user01

alter table tb02 owner to user01;
\dt tb02

在这里插入图片描述

4. 对象属主的权限设置

[Step1]: 查看 user01 在tb02上的隐式权限

select * from information_schema.table_privileges
where table_catalog='test'
and table_schema='public'
and table_name='tb02';

在这里插入图片描述

[Step2]: 属主的特殊权限不可被授予或移除

grant drop to tb02 to user01;
grant grant to tb02 to user01;
grant revoke to tb02 to user01;
revoke drop on table tb02 from user01;
revoke grant on table tb02 from user01;
revoke revoke on table tb02 from user01;

在这里插入图片描述

[Step3]: 管理员和属主可以撤销所有者在表中普通权限

revoke select on table tb02 from user01;

在这里插入图片描述

5. 授权普通用户访问对象

[Step1]: 创建新用户 user03

create user user03 password 'kingbase';

[Step2]: 授予用户访问数据库的权限

grant connect on database test to user03;

在这里插入图片描述

[Step2]: 授予用户访问模式的权限

grant usage on schema public to user03;

在这里插入图片描述

[Step3]: 授予用户访问表的权限

grant select on table db01 to user03;

在这里插入图片描述

[Step4]: 验证:使用 tb01 用户登录

\c - user03
select * from public.tb01;

在这里插入图片描述

6. public角色

public角色默认拥有登录所有数据库、在public模式下创建对象的权限,默认情况下所有用户属于public角色。

[Step1]: 查看public角色在test数据库、public模式中的权限

\l test
\dn+ public

在这里插入图片描述

[Step2]: 创建一个用户 pub_user,可以发现 pub_user 默认可以登录 test 数据库,可以在public模式中创建对象

create user pub_user password 'kingbase';
\c - pub_user
create table pub_tb (id int,name varchar(10));

在这里插入图片描述

[Step3]: 回收 public 角色的所有默认权限

revoke all on database test from public;

在这里插入图片描述

[Step4]: 验证:pub_user已经无法在test数据库中登录

\c - db_user

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/978604.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

StrokesPlus【电脑鼠标键盘手势软件】v0.5.8.0 中文绿色便携版

前言 StrokesPlus.net是一个超方便的手势识别软件,它能帮你用手势来代替鼠标和键盘操作。用起来既简单又灵活,功能还特别强大。 操作起来非常简单,它有好多实用的功能,比如智能识别你写的字、设定手势操作的区域、模拟鼠标的各种…

springBoot统一响应类型3.1版本

前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…

DDD 架构之领域驱动设计【通俗易懂】

文章目录 1. 前言2. MVC 对比 DDD3. DDD 分层架构4. 完整业务流程 1. 前言 官方回答:DDD是一种应对复杂业务系统的设计方法,通过将软件设计与业务领域紧密结合,帮助开发人员构建清晰、可维护的领域模型。在复杂的业务系统中,它能…

LeetCode 889.根据前序和后序遍历构造二叉树

题目: 给定两个整数数组,preorder 和 postorder ,其中 preorder 是一个具有 无重复 值的二叉树的前序遍历,postorder 是同一棵树的后序遍历,重构并返回二叉树。 如果存在多个答案,您可以返回其中 任何 一…

SSM共享充电宝系统

🍅点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅 项目视频 SS…

Android 常用命令和工具解析之存储相关

1 基本概念 2 命令解读 2.1 adb shell df df 命令主要用于需要检查文件系统上已使用和可用的磁盘空间的数量。如果没有指定文件名,则显示在当前所有挂载的文件系统上可用的空间。其原理是从proc/mounts 或 /etc/mtab 中检索磁盘信息。 注意:df命令并…

51单片机编程学习笔记——LED原理图

大纲 概览LED电路图Resistor Pack3位数电阻表示法VCC 在《51单片机编程学习笔记——编译代码点亮LED》一文中,我们通过下面这段代码点亮了D1和D2两个LED灯。 sbit LED1P2^0; //将P2.0管脚定义为LED1 sbit LED2P2^1; //将P2.1管脚定义为LED2 …… LED10; LED20;那么…

测试的BUG分析

在了解BUG之前,我们要先了解软件测试的生命周期,因为大多数BUG都是在软件测试的过程中被发现的 软件测试的生命周期 在了解 软件测试的生命周期 之前,我们要先了解 软件的生命周期 ,虽然他们之间只差了两个字,但是差距还是很大的 首先是 软件生命周期 ,这个是站在 软件 的角…

vue3+ts实现动态下拉选项为图标

功能&#xff1a;实现可配置项&#xff0c;下拉选项为图标&#xff0c;如图&#xff1a; 代码如下&#xff1a; <el-select v-model"BuyVolAcc" size"small" style"width: 100%" class"icon-selector"><el-option v-for&qu…

C语言(15)-------------->一维数组

这篇文章介绍的是数组的定义、创建、初始化、使用&#xff0c;在数组中输入内容并输出数组中的内容&#xff0c;并探讨了数组在内存中的存储。里面有些内容建议大家参考下面的一些文章&#xff0c;有助于加深大家对于C语言的理解&#xff1a; C语言&#xff08;2&#xff09;-…

RISCV指令集解析

参考视频&#xff1a;《RISC-V入门&进阶教程》1-4-RV32I基本指令集&#xff08;1&#xff09;_哔哩哔哩_bilibili privilege是特权指令集&#xff0c;有点系统调用的感觉&#xff0c;要走内核态。unprivilege指令集有点像普通的函数调用。

2.27 链表中等 817

817. Linked List Components class Solution { public:int numComponents(ListNode* head, vector<int>& nums) {// 将 nums 存储到一个 unordered_set 中&#xff0c;方便 O(1) 查找unordered_set<int> numSet(nums.begin(), nums.end());int count 0;bool …

NFC拉起微信小程序申请URL scheme 汇总

NFC拉起微信小程序&#xff0c;需要在微信小程序开发里边申请 URL scheme &#xff0c;审核通过后才可以使用NFC标签碰一碰拉起微信小程序 有不少人被难住了&#xff0c;从微信小程序开发社区汇总了以下信息&#xff0c;供大参考 第一&#xff0c;NFC标签打开小程序 https://de…

rustdesk远程桌面自建服务器

首先&#xff0c;我这里用到的是阿里云服务器 centos7版本&#xff0c;win版客户端。 准备工作 centos7 服务器端文件&#xff1a; https://github.com/rustdesk/rustdesk-server/releases/download/1.1.11-1/rustdesk-server-linux-amd64.zip win版客户端安装包&#xff1…

ERROR “GET /mobiles/13344444444/count/ HTTP/1.1“ 500 63503

背景&#xff1a; 美多的&#xff0c;这个问题我不知道那个老师为啥没讲&#xff0c;我直接去看了他的源码发现可恶&#xff0c;直接啥也没有&#xff0c;关键是他竟然跑的通 早知道用postman代替这个该死的刷新就好了&#xff0c;我写了差不多20多次 view.py的 class Mobile…

LabVIEW 项目长时间稳定运行注意事项

利用 LabVIEW 开发的上位机显示界面通过网络与数字板实现数据通讯&#xff0c;运行一周左右会出现一次数据掉线&#xff08;数据采集不上来&#xff09;&#xff0c;需重新 Connect 才能恢复的问题。 出现这种情况&#xff0c;可能是以下几方面原因导致&#xff1a; 网络通讯方…

MYSQL学习笔记(十):约束介绍(如:非空、唯一、主键、外键、级联、默认、检查约束)

前言&#xff1a; 学习和使用数据库可以说是程序员必须具备能力&#xff0c;这里将更新关于MYSQL的使用讲解&#xff0c;大概应该会更新30篇&#xff0c;涵盖入门、进阶、高级(一些原理分析);这一篇讲解“约束”&#xff0c;如&#xff1a;非空、唯一、主键、外键、级联、默认…

打印九九乘法表

打印九九乘法表 package struct; ​ public class ForDemo04 {public static void main(String[] args) { ​for (int i 1; i < 9; i) {//System.out.println(1"*"i""(1*i));for (int j 1; j < i; j) {System.out.print(i"*"j"&qu…

实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(2):功能介绍

0 参考资料 PCF8563数据手册&#xff08;第 11 版——2015 年 10 月 26 日&#xff09;.pdf 1 功能介绍 1.1 实时时钟&#xff08;RTC&#xff09;/日历 &#xff08;1&#xff09;PCF8563支持实时时钟&#xff08;RTC&#xff09;&#xff0c;提供时、分、秒信息。对应寄存器…

Hadoop完全分布式安装配置

Hadoop完全分布式安装配置 Hadoop完全分布式安装配置 使用的三台主机名称分别为bigdata1&#xff0c;bigdata2&#xff0c;bigdata3。所使用的安装包名称按自己的修改&#xff0c;安装包可去各大官网上下载* 一.JDK: 1.解压&#xff1a; tar -zxvf /opt/software/jdk-8u212…