KingbaseES 数据库中不同user的视图访问授权
前言
本文的目的是实现u1用户访问ud用户下的视图权限。
测试
登录system用户并创建schema,user,并授权schema的有关权限给ud用户
TEST=# select current_user;
current_user
--------------
system
(1 row)
TEST=# create schema ud;
CREATE SCHEMA
TEST=#
TEST=# create user ud;
CREATE ROLE
TEST=# grant usage on schema ud to ud;
GRANT
TEST=#
TEST=# grant select ON ALL TABLES IN SCHEMA ud to ud;
GRANT
TEST=# grant create on schema ud to ud;
GRANT
登录ud用户并执行命令
TEST=# \c - ud
You are now connected to database "TEST" as user "ud".
TEST=> create table ti (id int);
CREATE TABLE
TEST=> insert into ti values(1);
INSERT 0 1
TEST=>
TEST=> select * from ti;
id
----
1
(1 row)
TEST=> create view view_tu as select * from ti;
CREATE VIEW
TEST=>
TEST=> select * from view_tu;
id
----
1
(1 row)
登录system用户,创建role01并把视图的查询权限赋给role01
TEST=> \c - system
You are now connected to database "TEST" as user "system".
TEST=#
TEST=#
TEST=# create role role01;
CREATE ROLE
TEST=# grant select on ud.view_tu to role01;
GRANT
把role01角色赋给u1用户
TEST=# grant role01 to u1;
GRANT ROLE
TEST=#
TEST=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+------------
ab | | {ceshi001}
ceshi001 | Cannot login | {}
manager | Cannot login | {}
role01 | Cannot login | {}
sao | No inheritance | {}
sso | No inheritance | {}
system | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
u1 | | {role01}
ud | | {role01}
登录u1用户,查询schema ud下的视图,报错权限不足
TEST=# \c - u1;
You are now connected to database "TEST" as user "u1".
TEST=>
TEST=> select * from ud.view_tu;
ERROR: permission denied for schema ud
LINE 1: select * from ud.view_tu;
^
登录system用户并把schema ud 的权限赋给u1
TEST=> \c - system
You are now connected to database "TEST" as user "system".
TEST=#
TEST=#
TEST=# grant all privileges on schema ud to u1;
GRANT
TEST=#
登录u1用户,授权后可以查询schema ud的视图
TEST=# \c - u1
You are now connected to database "TEST" as user "u1".
TEST=>
TEST=> select * from ud.view_tu;
id
----
1
(1 row)
总结
如下,我们看到角色role01有视图view_tu的查询权限
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+---------+------+-------------------+-------------------+----------
ud | view_tu | view | ud=arwdDxt/ud +| |
| | | role01=r/ud | |
(1 row)
如下,我们看到u1用户拥有角色role01的权限
TEST=> \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+------------
ab | | {ceshi001}
ceshi001 | Cannot login | {}
manager | Cannot login | {}
role01 | Cannot login | {}
sao | No inheritance | {}
sso | No inheritance | {}
system | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
u1 | | {role01}
ud | | {role01}
因为前面执行过一个授权语句:grant all privileges on schema ud to u1;
根据以下sql查询权限得知u1拥有了在schema ud的USAGE和CREATE权限
select a.nspname,b.rolname,string_agg(a.pri_t,',') from
(select nspname,(aclexplode(COALESCE(nspacl, acldefault('n'::"char",nspowner)))).grantee as grantee,
(aclexplode(COALESCE(nspacl, acldefault('n'::"char",nspowner)))).privilege_type as pri_t
from pg_namespace where nspname not like 'pg%' and nspname <> 'information_schema') a,pg_authid b
where (a.grantee=b.oid or a.grantee=0) and b.rolname='u1' group by a.nspname,b.rolname;
nspname | rolname | string_agg
-------------+---------+--------------
public | u1 | USAGE,CREATE
sys | u1 | USAGE
sys_catalog | u1 | USAGE
sysaudit | u1 | USAGE,CREATE
sysmac | u1 | USAGE
ud | u1 | USAGE,CREATE
(6 rows)
经过以上的授权步骤我们可以看出,如果要实现u1用户对ud用户下视图的查询权限需要经过一些列复杂的授权过程。
尤其需要注意u1对schema ud的有关权限,否则即使拥有角色role01的查询权限也无法查看其他schema下视图。
KingbaseES 数据库中不同user的视图访问授权的更多相关文章
- 查看SQL Server数据库中各个表和视图的索引所占的空间大小
;with cte as ( (select t.name as TableName,i.name as IndexName, sum(row_count)as row_count, SUM (s.u ...
- sqlserver2008 数据库中查询存储过程的的创建修改和执行时间,以及比较常见的系统视图和存储过程
因为各种原因数据库中存在大量无用的存储过程,想查询存储过程的最后执行情况,处理长期不使用的存储过程 下面这条语句可以查询存储过程创建 修改和执行的最后时间: SELECT a.name AS 存储过程 ...
- KingbaseES数据库目录结构
KingbaseES数据库目录结构 [kingbase@postgres V8]$ tree -LP 2 data/ . ├── data │ ├── base # 存储用户创建的数据库文件及隶属于用 ...
- SQlServer 从系统表 sysobjects 中获取数据库中所有表或存储过程等对象
[sysobjects] 一.概述 系统对象表. 保存当前数据库的对象,如约束.默认值.日志.规则.存储过程等,该表中包含该数据库中的表 存储过程 视图等所有对象 在sqlserver2005,sql ...
- 如何将数据库中已有表导入到powerDesigner生成pdm文件
1.create new PDM: 2.select database menu; 3.click Reverse Engineer database :4.then choose your scr ...
- 查询SQLServer2005中某个数据库中的表结构、索引、视图、存储过程、触发器以及自定义函数
查询SQLServer2005中某个数据库中的表结构.索引.视图.存储过程.触发器以及自定义函数 2013-03-11 09:05:06| 分类: SQL SERVER|举报|字号 订阅 ( ...
- 数据库中树形列表(以easyui的tree为例)
构造一棵easyui前台框架的一个树形列表为例后台框架是spring MVC+JPA. 先看一下数据库是怎么建的,怎么存放的数据 下面是实体类 /** * 部门类 用户所属部门(这里的部门是一个相对抽 ...
- 批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor
批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor2.1.11 之前写过一篇文章,使用redgate公司的SQL PROMPT工具,但是不太方便 SQLPRO ...
- XAF:如何让用户在运行时个性化界面并将个性化信息保存到数据库中 win/web/entityframework/xpo
本主题介绍如何启用管理模型差异(XAFML),并将设置存储在数据库中. 名词解释: 1.模型:XAF中把所有应用程序的结构都用模型来定义,比如列表,有哪些列,名称是什么,对应的字段名是什么,业务对 ...
- Oracle数据库中SYS、SYSTEM、DBSNMP、SYSMAN四用户的区别
[转] SYS.SYSTEM.DBSNMP. Oracle 数据库中 SYS.SYSTEM.DBSNMP.SYSMAN 四用户的区别 用户: SYS 用户: SYS,默认密码为 CHANGE_ON ...
随机推荐
- 使用yum 报错 :This system is not registered with RHN
解决办法:(假定你已安装yum,且网络畅通)更改yum的源, 即更换/etc/yum.repos.d/rhel-debuginfo.repo 这个文件.首先备份,如下所示: [root@localho ...
- ghost方式批量安装win7
1. 需求介绍: 最近工作中需要给几百台PC安装win7操作系统,同时需要安装系统驱动和一些办公软件.刚开始是使用U盘制作的win7启动盘安装,发现效率太低,因为中间需要人监控安装进度以待安装好系 ...
- MySQL写入SQL整个执行流程
innodb存储引擎中一条sql写入的详细流程 第0步:会先去看缓冲区有没有这条数据,如果有就不进行缓存,直接进入第三步. 第1步:会将要修改的那一行数据所在的一整页加载到缓冲池Buffe ...
- 图片验证码pillow模块
安装下载 pip install pillow 使用 需要引入PIL里面的Image from PIL import Image # mode为采用什么色系,size为大小px,color为颜色 im ...
- ABP开发需要用到的命令
0.命令行在哪里执行? 在Visual Studio的"解决方案资源管理器"的解决方案或者项目上点鼠标右键,选择"在终端中打开". 1.安装abp的命令行 官网 ...
- Centos下git pull免密码操作
在终端输入以下指令: git config --global credential.helper store然后再次执行pull操作,还是会提示一次输入帐号与密码.断开终端链接,重连,再次进行pull ...
- 【Azure Function】修改Function执行的Timeout时间
问题描述 Azure Function默认的Timeout时间是否可以调整呢? 问题解答 可以的,根据创建Function的时候选择的定价层不同,Function 默认的Timeout时间也不同. 消 ...
- linux centos文本编辑模式快速进入末尾最后一行快捷键与跳转首行、行尾和某一行快捷键
前言 使用vim的过程中想要快速移动光标至行首.行尾.第一行.最后一行或者某一行,本文对此简单介绍. 具体操作 1.快速至当前行的行首:home键最简单 (1) Home键: (2) 符号^(要按sh ...
- 【拉格朗日优化dp】P4365 [九省联考 2018] 秘密袭击 coat
[拉格朗日优化dp]P4365 [九省联考 2018] 秘密袭击 coat 题目简述 求树上所有连通块第 \(k\) 大点权(不足 \(k\) 点记为 \(0\))的和. \(1\leq k\leq ...
- 学习ASP.NET Core Razor 编程系列文章目录
学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二--添加一个实体 学习ASP.NET Core Razor 编程系列三--创建数据表及创建项目 ...