openGauss中Schema赋权小试
目录
概述
1.关于public的权限要点:
2.关于用户同名的schema的权限要点:
3.关于普通schema的权限要点:
概述
下面是openGauss官网对Schema的介绍:
Schema又称作模式。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的Schema下而不引起冲突。
参考地址:Schema
数据库创建后,默认具有一个schema叫做public,所有用户都具有public的usage权限;用户可以创建其他的schema;另外创建数据库用户的时候,也会创建一个和该数据库用户同名的schema。
1.关于public的权限要点:
只有初始化用户和系统管理员可以在public下面创建函数,存储过程和同义词对象,其他用户即使赋予了create权限,也不能创建上述三种对象。可以把schema理解成操作系统的目录(文件夹),所不同的是schema只有一层,不能嵌套创建。
以下举例:teacher_li用户已经赋予了public的create权限:
(grant create on SCHEMA public to teacher_zhao;)。
执行时报错:
执行时出错 确认要继续执行吗? 单击“详细信息”了解详情。 SQL错误码: = 42501 ERROR: permission denied to create function "f_class_eng1" Hint: must be sysadmin to create a function in public schema. 行号: 10 |
在某些数据库中,schema也叫作命名空间(namespace),openGauss的系统表也叫作PG_NAMESPACE。查询PG_NAMESPACE也可以看到每个schema的赋权情况。
根据上图可以看出,teacher_zhao拥有public的create权限(’C’)。
2.关于用户同名的schema的权限要点:
对于用户同名的schema,即使赋予create权限给其他用户,其他用户也无法在该schema下面创建数据库对象,但是把usage权限赋予其他用户后,其他用户是可以查看该schema下面的表信息的。
如上面所示,teacher_zhao拥有和用户teacher_li 同名schema的create权限,但是执行创建数据库对象语句时,仍然报错,不能执行:
执行时出错 确认要继续执行吗? 单击“详细信息”了解详情。 SQL错误码: = 42501 ERROR: current user does not have privilege to role teacher_li 行号: 3 |
需要把用户/角色teacher_li赋予teacher_zhao之后,teacher_zhao才可以在teacher_li的同名schema下创建数据库对象。
赋权语句:grant teacher_li to teacher_zhao;
执行结果:create table teacher_li.t1(a int);
说明:用户拥有create权限,即可认为用户也拥有查询的权限,如下图所示,teacher_zhao的usage权限已经被回收:
REVOKE usage on schema teacher_li from teacher_zhao;
然而还是能够查询表,
回收:
查询权限:
查询表数据:select * from teacher_li.t1
3.关于普通schema的权限要点:
普通schema的create权限grant给其他用户后,其他用户即可以创建对象。
用clouduser分别创建schema teacher_zhao2、teacher_zhao3(指定AUTHORIZATION),并把create权限赋给teacher_li:
create SCHEMA teacher_zhao2;CREATE SCHEMA teacher_zhao3 AUTHORIZATION teacher_zhao;grant create on SCHEMA teacher_zhao2 to teacher_li;grant create on SCHEMA teacher_zhao3 to teacher_li;create SCHEMA teacher_zhao2;CREATE SCHEMA teacher_zhao3 AUTHORIZATION teacher_zhao;grant create on SCHEMA teacher_zhao2 to teacher_li;grant create on SCHEMA teacher_zhao3 to teacher_li;v
查询schema系统表:
select * from pg_namespace where nspname like 'teacher_zhao%'
可以发现没有指定AUTHORIZATION的情况下,默认创建用户是clouduser(系统管理员),而指定情况下,则创建用户就是指定的用户。
下面尝试用teacher_li登录,创建数据库对象:
create table teacher_zhao2.t2(a int);create table teacher_zhao3.t2(a int);
创建成功。
作者:如鱼得水
openGauss中Schema赋权小试相关推荐
- 坎蒂雷赋权法 matlab,综合评价系统中客观赋权方法.doc
综合评价系统中客观赋权方法 综合评价系统中客观赋权方法 提要客观赋权方法是从原始数据出发,从样本中提取信息,相较于主观赋权方法得到的权数的偏差更小一些,更能反映众多评价指标真实的重要程度.本文通过比较 ...
- oracle中的赋权
1 怎么给用户赋权限 grant create view to scott; (create view 是权限的名称) 2 怎么给用户撤销权限 revoke create view from scot ...
- PostgreSQL 数据库赋权命令
我平时使用数据库很少会有赋权的操作,但是最近有个场景需要给某个用户设置只能操作哪些数据库和表还有序列.我分享一下我的经验,我用的是 PostgreSQL 数据库. 赋权命令语法 PostgreSQL ...
- windows下DB2赋权以及DBeaver新建SCHEMA和TABLE
1.赋权 给自己整个最高权限吧, 别委屈了自己 先管理员模式打开命令行 C:\Windows\system32> db2cmd 新打开的命令行界面中连接到自己的数据库 C:\Windows\sy ...
- oracle创建目录并赋权,Oracle 添加用户并赋权,修改密码,解锁,删除用户的方法...
添加用户(随着用户的创建,自动产生与用户同名的schema) CREATE USER "TESTER" PROFILE "DEFAULT" IDENTIFIED ...
- 如何给数据库设置用户并赋权
目录 环境 症状 问题原因 解决方案 环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.7.6 症状 ERROR: 42501: permiss ...
- LL1分析构造法_数学建模算法--最优赋权法(含代码)
数学建模算法--最优赋权法(含代码) 作者:郑铿城 本次介绍数学建模和科研写作的方法--最优赋权法最优赋权法经常用于分析评价类问题,从该算法的名称就可以看到,该算法首先要体现"最优" ...
- 《MySQL——关于grant赋权以及flush privileges》
先上总结图: 对于赋予权限或者收回权限还是创建用户,都会涉及两个操作: 1.磁盘,mysql.user表,用户行所有表示权限的字段的值的修改 2.内存,acl_users找到用户对应的对象,将acce ...
- MySQL赋权navicat_mysql 的root 用户无法授权及解决navicat 远程授权提示1044问题
先看解决方案 #------------mysql root 用户无法赋权问题解决 -------- 1,登录 mysql -u root -p 2,use mysql; 选择mysql数据库 3,执 ...
最新文章
- 泛型中? super T和? extends T的区别
- 【数据结构】单链表的实现(C语言)
- 蔡氏电路matlab程序,蔡氏电路matlab仿真报告
- 工作总结10:解决vuex刷新数据消失
- object not found php,找不到PHP错误对象
- BZOJ4025 二分图
- Binder机制原理简述
- 树莓派小实验 | 制作一个带快门的照相机 录像机
- protel dxp2004第三讲之仿真设计
- 哈希的结构-MD系列
- java画哆啦A梦_java如何绘制哆啦A梦 java绘制哆啦A梦代码示例
- hdu 5148 Cities(树形dp)
- 【校招 --阶段一 系统编程】system V共享内存
- 520|使用Python花式表白的六种姿势
- CommMonitor监控串口数据
- vscode修改PHP注释
- “鲲鹏”七夕坐“高铁”,这难道是个灯谜?
- Extjs6关于Ajax和form表单提交以及store请求session超时的处理方法
- JAVA中怎么去掉字符串中间的空格?
- 智能淘宝客系统架构图