返回顶部
分享到

openGauss的SCHEMA的原理及管理介绍

数据库其他 来源:互联网 作者:佚名 发布时间:2023-02-14 21:22:11 人浏览
摘要

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

1

2

3

4

5

6

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

1

2

3

4

5

6

7

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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、插入记录和查询记录 

1

2

3

4

5

6

7

8

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开头的模式,这些模式是系统内部使用的

1

DROP SCHEMA tpcds1 CASCADE;

???????????? 补充

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

???? 3.Schema赋权

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

分别创建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:

1

2

3

4

5

6

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


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://juejin.cn/post/7198894062535098426
相关文章
  • 一文介绍在Hive中NULL的理解
    在 Hive 中,NULL 是一个特殊的值,表示未知或缺失。任何与NULL的比较操作(如=,,,=,=,)都会返回NULL,而不是TRUE或FALSE。 1.NULL 的比较规则 在
  • Navicat Premium 12数据库管理解决方案

    Navicat Premium 12数据库管理解决方案
    Navicat Premium 12是一款全面的数据库管理工具,支持多种数据库系统如MySQL、MariaDB、Oracle、SQL Server、PostgreSQL等。它提供了多数据库连接、数据
  • sqlite3命令行工具使用介绍
    一、启动与退出 启动数据库连接 1 2 3 sqlite3 [database_file] # 打开/创建数据库文件(如 test.db) sqlite3 # 启动临时内存数据库 (:memory:) sqlite3 :m
  • StarRocks简介与搭建使用介绍

    StarRocks简介与搭建使用介绍
    StarRocks简介 StarRocks 是一款高速、实时、全场景的MPP(大规模并行处理)分析型数据库系统,专为现代数据分析场景设计,强调亚秒级查询性
  • centos虚拟机部署opengauss数据库详细图文

    centos虚拟机部署opengauss数据库详细图文
    一、基本信息 1、虚拟机安装的centos版本 2、opengauss版本 地址:https://opengauss.org/zh/download/ 3、opengauss和gaussdb的区别 高斯数据库(GaussDB)是云
  • 达梦数据库文件故障的恢复方法

    达梦数据库文件故障的恢复方法
    1、概述 1.1 概述 本文介绍了达梦数据库文件损坏或误删除后的恢复方法。这里的数据库文件包括,表空间数据文件、重做日志文件、UNDO文件
  • Sql Server 2008 数据库附加错误:9004问题解决方案介
    【问题描述】 数据库文件存在异常状况,有可能是因为硬盘有坏区引起的。附加数据库的时候,提示错误9004。 【解决方法】 假设数据库名
  • Access数据中的SQL偏移注入原理解析介绍
    使用场景: 目标数据表的字段较多,无法一一获取的时候,尝试使用偏移注入的方式实现SQL注入。 原理: 例如:一个表有6个字段,而你想
  • Navicat导入Excel数据时数据被截断的问题分析与解

    Navicat导入Excel数据时数据被截断的问题分析与解
    在数据库的日常操作中,将Excel数据导入MySQL是常见的需求之一,特别是通过Navicat工具进行Excel数据导入时,可能会遇到数据截断的问题。具
  • GaussDB数据库事务管理及高级应用

    GaussDB数据库事务管理及高级应用
    事务管理是数据库系统中至关重要的一部分,它确保了数据库的一致性和可靠性。在GaussDB数据库中,事务管理不仅遵循传统的ACID特性,还提
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计