openGauss的SCHEMA的原理及管理介紹
?? 1.何為Schema摘要:
本篇介紹了openGauss的SCHEMA的原理及管理。
Schema又稱(chēng)作模式。通過(guò)管理Schema,允許多個(gè)用戶(hù)使用同一數(shù)據(jù)庫(kù)而不相互干擾,可以將數(shù)據(jù)庫(kù)對(duì)象組織成易于管理的邏輯組,同時(shí)便于將第三方應(yīng)用添加到相應(yīng)的Schema下而不引起沖突。
?????? 數(shù)據(jù)庫(kù)(database)、用戶(hù)(user)、schema、和表的關(guān)系如下圖所示:

每個(gè)數(shù)據(jù)庫(kù)包含一個(gè)或多個(gè)Schema。數(shù)據(jù)庫(kù)中的每個(gè)Schema包含表和其他類(lèi)型的對(duì)象。數(shù)據(jù)庫(kù)創(chuàng)建初始,默認(rèn)具有一個(gè)名為public的Schema,且所有用戶(hù)都擁有此Schema的usage權(quán)限,只有系統(tǒng)管理員和初始化用戶(hù)可以在public Schema下創(chuàng)建函數(shù)、存儲(chǔ)過(guò)程和同義詞對(duì)象,其他用戶(hù)即使賦予create權(quán)限后也不可以創(chuàng)建上述三種對(duì)象??梢酝ㄟ^(guò)Schema分組數(shù)據(jù)庫(kù)對(duì)象。Schema類(lèi)似于操作系統(tǒng)目錄,但Schema不能嵌套。
??????注意要點(diǎn)
相同的數(shù)據(jù)庫(kù)對(duì)象名稱(chēng)可以應(yīng)用在同一數(shù)據(jù)庫(kù)的不同Schema中 CREATE USER創(chuàng)建用戶(hù)的同時(shí),系統(tǒng)會(huì)在執(zhí)行該命令的數(shù)據(jù)庫(kù)中,為該用戶(hù)創(chuàng)建一個(gè)同名的SCHEMA 可以把schema理解成操作系統(tǒng)的目錄(文件夾),所不同的是schema只有一層,不能嵌套創(chuàng)建
?? 2.Schema語(yǔ)法
? 2.1 創(chuàng)建SCHEMA
語(yǔ)法:CREATE SCHEMA schema_name [ AUTHORIZATION user_name ] ;
案例1:創(chuàng)建一個(gè)名為tpcds的模式
openGauss=# create schema tpcds;
openGauss=# \dn+ tpcds
List of schemas
Name | Owner | Access privileges | Description | WithBlockChain
-------+-------+-------------------+-------------+----------------
tpcds | omm | | | f

? 2.2 修改SCHEMA
修改模式的名稱(chēng)語(yǔ)法:ALTER SCHEMA schema_name RENAME TO new_name; 修改模式的所有者語(yǔ)法: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:創(chuàng)建一個(gè)用戶(hù)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、插入記錄和查詢(xún)記錄
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
語(yǔ)法:DROP SCHEMA schema_name; 注:不要隨意刪除pg_temp或pg_toast_temp開(kāi)頭的模式,這些模式是系統(tǒng)內(nèi)部使用的
DROP SCHEMA tpcds1 CASCADE;

?????? 補(bǔ)充
要查看屬于某Schema下的表列表,請(qǐng)查詢(xún)系統(tǒng)視圖PG_TABLES: openGauss=# SELECT distinct(tablename),schemaname from pg_tables where schemaname = 'pg_catalog';

?? 3.Schema賦權(quán)
普通schema的create權(quán)限grant給其他用戶(hù)后,其他用戶(hù)即可以創(chuàng)建對(duì)象。
分別創(chuàng)建schema teacher_zhao2、teacher_zhao3(指定AUTHORIZATION),并把create權(quán)限賦給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
可以發(fā)現(xiàn)沒(méi)有指定AUTHORIZATION的情況下,默認(rèn)創(chuàng)建用戶(hù)是clouduser(系統(tǒng)管理員),
而指定情況下,則創(chuàng)建用戶(hù)就是指定的用戶(hù)。
下面嘗試用jeames登錄,創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象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的原理及管理介紹的詳細(xì)內(nèi)容,更多關(guān)于openGauss SCHEMA管理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- openGauss數(shù)據(jù)庫(kù)共享存儲(chǔ)特性概述
- Navicat Premium遠(yuǎn)程連接MySQL數(shù)據(jù)庫(kù)的方法
- 解決navicat遠(yuǎn)程連接mysql報(bào)錯(cuò)10038的問(wèn)題
- 詳解Navicat遠(yuǎn)程連接mysql很慢
- 解決Navicat遠(yuǎn)程連接MySQL出現(xiàn) 10060 unknow error的方法
- Navicat 遠(yuǎn)程連接 MySQL實(shí)現(xiàn)步驟解析
- 詳解使用navicat連接遠(yuǎn)程linux mysql數(shù)據(jù)庫(kù)出現(xiàn)10061未知故障
- 如何使用navicat遠(yuǎn)程連接openGauss
相關(guān)文章
詳解IDEA中便捷內(nèi)存數(shù)據(jù)庫(kù)H2的最簡(jiǎn)使用方式
這篇文章主要介紹了詳解IDEA中便捷內(nèi)存數(shù)據(jù)庫(kù)H2的最簡(jiǎn)使用方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
面向云服務(wù)的GaussDB全密態(tài)數(shù)據(jù)庫(kù)現(xiàn)狀及問(wèn)題小結(jié)
全密態(tài)數(shù)據(jù)庫(kù),顧名思義與大家所理解的流數(shù)據(jù)庫(kù)、圖數(shù)據(jù)庫(kù)一樣,就是專(zhuān)門(mén)處理密文數(shù)據(jù)的數(shù)據(jù)庫(kù)系統(tǒng),這篇文章主要介紹了面向云服務(wù)的GaussDB全密態(tài)數(shù)據(jù)庫(kù),未來(lái)GaussDB會(huì)將該能力逐步開(kāi)源到openGauss,與社區(qū)共同推進(jìn)和完善全密態(tài)數(shù)據(jù)庫(kù)解決方案,一起打造數(shù)據(jù)庫(kù)安全生態(tài)2024-02-02
當(dāng)數(shù)據(jù)庫(kù)變慢時(shí)的解決方法
當(dāng)數(shù)據(jù)庫(kù)變慢時(shí),我們應(yīng)如何入手,下面的解決方法。2009-04-04
mongoDB和mysql對(duì)比分析及選擇(詳細(xì)版)
這篇文章主要介紹了mongoDB和mysql對(duì)比分析及選擇(詳細(xì)版),需要的朋友可以參考下2023-06-06
淺談為什么數(shù)據(jù)庫(kù)字段建議設(shè)置為NOT NULL
本文主要介紹了MySQL數(shù)據(jù)庫(kù)中將字段設(shè)置為NOT NULL的性能和優(yōu)缺點(diǎn),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
SQLServer與Oracle常用函數(shù)實(shí)例對(duì)比匯總
這篇文章主要介紹了SQLServer與Oracle常用函數(shù)對(duì)比,需要的朋友可以參考下2014-06-06
postgres 數(shù)據(jù)庫(kù)中的數(shù)據(jù)轉(zhuǎn)換
postgres8.3以后,字段數(shù)據(jù)之間的默認(rèn)轉(zhuǎn)換取消了。如果需要進(jìn)行數(shù)據(jù)變換的話,在postgres數(shù)據(jù)庫(kù)中,我們可以用"::"來(lái)進(jìn)行字段數(shù)據(jù)的類(lèi)型轉(zhuǎn)換。2009-07-07

