openGauss的SCHEMA的原理及管理介绍

目录
  • 1.何为Schema摘要:
  • 2.Schema语法
    • 2.1 创建SCHEMA
    • 2.2 修改SCHEMA
    • 2.3 删除SCHEMA
  • 3.Schema赋权

1.何为Schema摘要:

本篇介绍了openGauss的SCHEMA的原理及管理。

Schema又称作模式。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的Schema下而不引起冲突。

数据库(database)、用户(user)、schema、和表的关系如下图所示:

每个数据库包含一个或多个Schema。数据库中的每个Schema包含表和其他类型的对象。数据库创建初始,默认具有一个名为public的Schema,且所有用户都拥有此Schema的usage权限,只有系统管理员和初始化用户可以在public Schema下创建函数、存储过程和同义词对象,其他用户即使赋予create权限后也不可以创建上述三种对象。可以通过Schema分组数据库对象。Schema类似于操作系统目录,但Schema不能嵌套。

注意要点

相同的数据库对象名称可以应用在同一数据库的不同Schema中 CREATE USER创建用户的同时,系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA 可以把schema理解成操作系统的目录(文件夹),所不同的是schema只有一层,不能嵌套创建

2.Schema语法

2.1 创建SCHEMA

语法:CREATE SCHEMA schema_name [ AUTHORIZATION user_name ] ;

案例1:创建一个名为tpcds的模式

openGauss=#  create schema tpcds;
openGauss=# \dn+ tpcds
                         List of schemas
 Name  | Owner | Access privileges | Description | WithBlockChain
-------+-------+-------------------+-------------+----------------
 tpcds | omm   |                   |             | f

2.2 修改SCHEMA

修改模式的名称语法:ALTER SCHEMA schema_name RENAME TO new_name; 修改模式的所有者语法:ALTER SCHEMA schema_name OWNER TO new_owner;

案例1:重命名tpcds为tpcds1

openGauss=# ALTER SCHEMA tpcds RENAME TO tpcds1;
ALTER SCHEMA
openGauss=# \dn+ tpcds1
                          List of schemas
  Name  | Owner | Access privileges | Description | WithBlockChain
--------+-------+-------------------+-------------+----------------
 tpcds1 | omm   |                   |             | f

案例2:创建一个用户jeames, 并将tpcds1的owner修改为jeames

openGauss=# CREATE USER jeames PASSWORD 'abcd@123';
CREATE ROLE
openGauss=# \dn
     List of schemas
      Name       | Owner
-----------------+--------
 blockchain      | omm
 cstore          | omm
 db4ai           | omm
 dbe_perf        | omm
 dbe_pldebugger  | omm
 dbe_pldeveloper | omm
 jeames          | jeames
 mesdb           | mesdb
 pkg_service     | omm
 public          | omm
 snapshot        | omm
 sqladvisor      | omm
 tpcds1          | omm
(13 rows)
openGauss=# ALTER SCHEMA tpcds1 OWNER TO jeames;
ALTER SCHEMA
openGauss=# \dn+ tpcds1
                          List of schemas
  Name  | Owner  | Access privileges | Description | WithBlockChain
--------+--------+-------------------+-------------+----------------
 tpcds1 | jeames |                   |             | f

案例3:在模式tpcds1中建表customer、插入记录和查询记录

openGauss=# create table tpcds1.customer(id int, name char(30));
CREATE TABLE
openGauss=# insert into tpcds1.customer values(1 ,'xxxx');
INSERT 0 1
openGauss=# select * from tpcds1.customer;
 id |              name
----+--------------------------------
  1 | xxxx

2.3 删除SCHEMA

语法:DROP SCHEMA schema_name; 注:不要随意删除pg_temp或pg_toast_temp开头的模式,这些模式是系统内部使用的

DROP SCHEMA tpcds1 CASCADE;

补充

要查看属于某Schema下的表列表,请查询系统视图PG_TABLES: openGauss=# SELECT distinct(tablename),schemaname from pg_tables where schemaname = 'pg_catalog';

3.Schema赋权

普通schema的create权限grant给其他用户后,其他用户即可以创建对象。

分别创建schema teacher_zhao2、teacher_zhao3(指定AUTHORIZATION),并把create权限赋给teacher_li:
openGauss=# create SCHEMA teacher_zhao2;
CREATE SCHEMA
openGauss=# \dn+ teacher_zhao2
                             List of schemas
     Name      | Owner | Access privileges | Description | WithBlockChain
---------------+-------+-------------------+-------------+----------------
 teacher_zhao2 | omm   |                   |             | f
openGauss=# CREATE SCHEMA teacher_zhao3 AUTHORIZATION jeames;
CREATE SCHEMA
openGauss=# \dn+ teacher_zhao3
                              List of schemas
     Name      | Owner  | Access privileges | Description | WithBlockChain
---------------+--------+-------------------+-------------+----------------
 teacher_zhao3 | jeames |                   |             | f
可以发现没有指定AUTHORIZATION的情况下,默认创建用户是clouduser(系统管理员),
而指定情况下,则创建用户就是指定的用户。

下面尝试用jeames登录,创建数据库对象teacher_zhao2.t2:

openGauss=# grant create on SCHEMA teacher_zhao2 to jeames;
openGauss=# grant all on all tables in schema teacher_zhao2 to jeames;
openGauss=# grant select on teacher_zhao2.t2 to jeames;
openGauss=> create table teacher_zhao2.t2(a int);
openGauss=# \c postgres jeames
openGauss=> create table teacher_zhao2.t2(a int);

以上就是openGauss的SCHEMA的原理及管理介绍的详细内容,更多关于openGauss SCHEMA管理的资料请关注我们其它相关文章!

(0)

相关推荐

  • 教你使用Psycopg2连接openGauss的方法

    目录 1.简介 2.接口介绍 开发流程 接口说明 3.使用 3.1环境准备 3.2下载并加载python驱动 3.3创建数据库连接用户 3.4示例 4.常见报错 1.简介 Psycopg是一种用于执行SQL语句的PythonAPI,可以为PostgreSQL.openGauss数据库提供统一访问接口,应用程序可基于它进行数据操作.Psycopg2是对libpq的封装,主要使用C语言实现,既高效又安全.它具有客户端游标和服务器端游标.异步通信和通知.支持“COPY TO/COPY FROM”功能.

  • JSON schema配置规范使用教程

    目录 介绍 使用 schemastore 编写 schema properties definitions 总结 介绍 不知道大家在写一些 JSON 配置时会不会经常觉得麻烦,每次都要打开文档去核对字段名称对不对.结尾有没有 s.结构是否正确.是不是数组等问题.然而我最近发现一些开源项目生成的配置文件中都开始使用 JSON schema 来规范配置文件,IDE 也会对 JSON 配置进行提示和检查,真香.本文介绍下 JSON schema 的使用方法和使用场景. JSON schema 是一套对

  • Monaco-editor 的 JSON Schema 配置及使用介绍

    目录 JSON Schema 作用用法 JSON Schema Core Vocabulary $schema $id $ref $dynamicRef $anchor / $dynamicAnchor $defs 关键字 type title & description default examples deprecated readOnly & writeOnly $comment enum const 媒体类型关键字 contentMediaType contentEncoding

  • JSON Schema概念及使用场景

    目录 1.什么是JSON Schema 2. JSON Schema的应用场景 2.1 表单数据校验 2.2 接口数据校验 2.3 低代码 low-code 1.什么是JSON Schema 相信前端童鞋,对JSON应该都很熟悉.JSON (JavaScript Object Notation) 缩写,JSON 是一种数据格式,具有简洁.可读性高.支持广泛的特点JSON.通过JSON 我们可以灵活地来表示任意复杂的数据结构. 比如我们要描述一个人的信息,我们可以用JSON来描述 那JSON Sc

  • windows环境下python连接openGauss数据库的全过程

    目录 一.python 介绍 二.Python下载及安装 三.openGauss Connectors (Psycopg2) 介绍 四.openGauss Connectors (Psycopg2)下载并初始化 五.连接并访问openGauss数据库 六.问题总结(FAQ) 总结 一.python 介绍 python最新版 windows python是款面向对象.直译式计算机程序设计语言,同时也是一种功能强大而完善的通用型语言,具有非常简洁而清晰的语法特点,适合完成各种高层任务,几乎可以在所有

  • Linux环境下的Java(JDBC)连接openGauss数据库实践记录

    目录 一.测试环境: 本实验预置环境 二.Linux环境安装Java环境及配置步骤 三.准备链接数据库的环境 四.连接测试 五.经验小结(FAQ) 一.测试环境: 本实验预置环境 1)操作系统版本:CentOS 7 64位(CentOS Linux release 7.6.1810)2)DataBase & JDBC版本: openGauss 2.0.1. JDBC驱动版本:JDBC_2.0.0官方下载地址:https://opengauss.org/zh/download/ (Tips:官方最

  • openGauss的SCHEMA的原理及管理介绍

    目录 1.何为Schema摘要: 2.Schema语法 2.1 创建SCHEMA 2.2 修改SCHEMA 2.3 删除SCHEMA 3.Schema赋权 1.何为Schema摘要: 本篇介绍了openGauss的SCHEMA的原理及管理. Schema又称作模式.通过管理Schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的Schema下而不引起冲突. 数据库(database).用户(user).schema.和表的关系

  • Oracle表空间管理和用户管理介绍

    目录 Oracle介绍 1. Oracle表空间 2. Oracle用户权限管理 3. 查看用户及权限信息 总结 Oracle介绍 Oracle(甲骨文)公司 1977年,三人合伙创办(Software Development Laboratories,SDL) 1979年,更名为Relational Software Inc.,RSI 1983年,为了突出核心产品 ,RSI更名为Oracle 2002年04月26日,启用"甲骨文"作为中文注册商标 1. Oracle表空间 表空间是O

  • C++内存管理介绍

    目录 1 smart_ptr概述 1.1 RAII进制 1.2 智能指针 1.3 scoped_ptr 1.4 scoped_array 1.6 shared_array 1.7 weak_ptr弱指针 2 总结 前言; C++继承了C语言的指针,一直以来指针的一些问题困扰着开发人员,常见的指针问题主要有:内存泄露.野指针.访问越界等.值得庆幸的是C++标准委员会给我们提供了auto_ptr智能指针,后面又引入了share_ptr以及weak_ptr帮助我们正确和安全的使用指针,本文主要是介绍b

  • C语言动态内存管理介绍

    目录 前言: C 语言为内存的分配和管理提供了几个函数: 1.malloc() 用法 2.calloc() 用法 3.realloc() 与 free() 用法 前言: 简单记录一下,内存管理函数 为什么使用动态内存呢? 简单理解就是可以最大限度调用内存 用多少生成多少,不用时就释放而静止内存不能释放 动态可避免运行大程序导致内存溢出 C 语言为内存的分配和管理提供了几个函数: 头文件:<stdlib.h> 注意:void * 类型表示未确定类型的指针  1.malloc() 用法  分配一块

  • 关于C语言动态内存管理介绍

    目录 1.为什么需要动态内存分配 2.有关动态内存函数介绍 2.1 malloc和free 2.2 calloc函数 2.3 realloc函数 3. 常见的动态内存错误 3.1 对NULL指针进行解引用操作 3.2 对动态开辟空间的越界访问 3.3 对非动态开辟内存使用free释放 3.4 使用free释放一块动态开辟内存的一部分 3.5 对同一块动态内存多次释放 3.6 动态开辟内存忘记释放(内存泄漏) 总结 1.为什么需要动态内存分配 关于这个问题,我们先看看我们之前是如何开辟内存的. i

  • SpringBoot嵌入式Web容器原理与使用介绍

    目录 原理 应用 1. 切换Web服务器 2. 定制服务器规则 嵌入式 Web 容器:应用中内置服务器(Tomcat),不用在外部配置服务器了 原理 SpringBoot 项目启动,发现是 web 应用,引入 web 场景包 ----- 如:Tomcat web 应用创建一个 web 版的 IOC 容器 ServletWebServerApplicationContext ServletWebServerApplicationContext 启动的时候寻找 ServletWebServerFac

  • Vue snippets插件原理与使用介绍

    目录 vue-snippets snippets是什么 vue-3-snippets插件支持的功能 vue-snippets 随着开发者的年限的增加,不仅头发有点少,重复的代码也不断的增多,为了能够少写代码,GitHub友好的给我们提供了智能代码提示,而我们也以友好的方式赞助它,当然也有很多开发者写了类似的插件. 那我为什么要写呢? 我想要有适合自己的代码片段,同时也支持更多的代码片段,更加方便开发者快速使用. snippets是什么 snippets简单来说就是代码片段,比如你想实现下面这段代

  • Repo工作原理和使用介绍

    目录 1. 概要 2. 工作原理 2.1 项目清单库(.repo/manifests) 2.2 repo脚本库(.repo/repo) 2.3 仓库目录和工作目录 3. 使用介绍 3.1 init 3.2 sync 3.3 upload 3.4 download 3.5 forall 3.6 prune 3.7 start 3.8 status 4. 使用实践 4.1 对项目清单文件进行定制 4.2 解决无法下载Android源码 4.3 更快更省的下载远程代码 4.4 避免在匿名分支上工作 4

  • MySQL半同步复制原理配置与介绍详解

    环境介绍: Ubuntu Server 16.04.2+MySQL 5.7.17 Community Server (GPL) MySQL安装 通过APT的方式安装,官方指导文档地址: https://dev.mysql.com/downloads/repo/apt/ 1.下载mysql-apt-config_0.8.3-1_all.deb 2.安装deb A Quick Guide to Using the MySQL APT Repository: https://dev.mysql.com

  • PostgreSQL教程(十二):角色和权限管理介绍

    PostgreSQL是通过角色来管理数据库访问权限的,我们可以将一个角色看成是一个数据库用户,或者一组数据库用户.角色可以拥有数据库对象,如表.索引,也可以把这些对象上的权限赋予其它角色,以控制哪些用户对哪些对象拥有哪些权限.     一.数据库角色: 1. 创建角色:   复制代码 代码如下: CREATE ROLE role_name; 2. 删除角色:   复制代码 代码如下: DROP ROLE role_name; 3. 查询角色: 检查系统表pg_role,如:   复制代码 代码如

随机推荐