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);
创建成功。
作者:如鱼得水
🍒如果您觉得博主的文章还不错或者有帮助的话,请关注一下博主,如果三连点赞评论收藏就更好啦!谢谢各位大佬给予的支持!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
浅谈服务接口的高可用设计
作者:京东零售 王磊 前言 作为一个后端研发人员,开发服务接口是我正常不过的工作了,这些接口不管是面向前端HTTP或者是供其他服务RPC远程调用的,都绕不开一个共同的话题就是“高可用”,接口开发往往看似简单,但保证高可用这块实现起来却不并没有想想的那么容易,接下来我们就看一下,一个高可用的接口是该考虑哪些内容,同时文中有不足的欢迎批评指正。 到底啥是高可用 用一句简单的话来概就是我们的系统具不具备应对和规避风险的能力。 为啥做高可用 1. 程序都是有人开发的,在开发过程中会犯错从而导致线上事故的发生 2. 系统运行依赖各种运行环境:CPU、内存、硬盘、网络等等,而这些都有可能损坏 3. 业务拉新用户正在注册账号,结果注册接口挂了用户体验受影响 4. 双十一、618等大促大量用户下单,结果下单服务接口挂了GMV受影响等等 5. 其他未知因素等等 总之为了应对这些不可控因素的发生,我们必须要做高可用 高可用的关键点 我们说过高可用的本质是系统是否具备应对和规避风险的能力,那么从这个角度出发来设计高可用接口的有以下几个关键因素:Dependence(依赖)、Probability(概率)、T...
- 下一篇
Simple Admin 分布式后台管理系统 v0.2.1 发布,新增三端UUID代码生成
更新内容: simple admin core 升级至 v0.2.1 新增: Ent UUIDMixin 修复: 用户和token采用UUID 优化: ErrorCtx 和 OkJsonCtx simple admin backend ui 升级至 v0.2.1 修复:token 和 user 的 UUID 支持 优化:优化代码运行速度 simple admin tools 升级至 v0.1.5 新增: 基于 UUID 的三端代码生成 修复: Ent生成数据类型错误 优化: interface{} 改为 any 近期规划: 优化 multiple rpc group 优化 proto 文件拆分 UUIDMixin文档: https://doc.ryansu.pro/zh/guide/feature/ORM/ent.html#mixin-%E4%BB%8B%E7%BB%8D
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装Docker,最新的服务器搭配容器使用
- Hadoop3单机部署,实现最简伪集群
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Linux系统CentOS6、CentOS7手动修改IP地址