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);

创建成功。

作者:如鱼得水

🍒如果您觉得博主的文章还不错或者有帮助的话,请关注一下博主,如果三连点赞评论收藏就更好啦!谢谢各位大佬给予的支持!

优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/gaussdb/blog/6071222

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。