PostgreSQL技術大講堂 - Part 7:PG使用者schema相互關係

unix_5359發表於2023-03-02
PostgreSQL技術大講堂 - Part 7:PG使用者schema相互關係

PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內容包括對PG基礎的認知、包括安裝使用、包括角色許可權、包括維護管理、、等內容,希望對熱愛PG、學習PG的同學們有幫助,歡迎持續關注CUUG PG技術大講堂。

Part 7:PG使用者與schema關係

內容1:PostgreSQL Schema概述

內容2:PostgreSQL 使用者與Schema

內容3:PostgreSQL schema管理

內容4:PostgreSQL public schema

內容5:PostgreSQL 模式使用建議


7.1、Schema概述

什麼是schema(模式)? 使用者物件的集合叫做模式。比如:scott使用者下有表emp、dept、salgrade等,還有幾個索引,還有一些約束等等,那麼scott使用者下所有物件的集合就叫scott模式。

可以把使用者下擁有的物件根據業務分類,不同的物件存放在不同的模式下。

新建的資料庫預設會建立不同的模式來管理物件。比如:information_schema、pg_catalog、pg_temp_1、pg_toast、pg_toast_temp_1、public 等。

不同的schema下可以有相同名字的表、函式等物件,互相之間是不衝突的。只要有許可權,每個schema的物件是可以互相呼叫的。

7.2、使用者與模式對應關係

一個使用者可以建立與擁有多個模式。

一個模式只能屬於一個使用者。

普通使用者建立模式時需要授權在指定的資料庫下建立模式的許可權。

GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }ON DATABASE database_name [, ...] TO role_specification [, ...] [ WITH GRANT OPTION ] 建立使用者示例

7.3、管理模式

授權

GRANT CREATE ON DATABASE testdb TO u1;

建立模式

create schema sport; create schema art;

檢視模式

testdb=> \dn 

List of schemas 

Name | Owner

------+-------

art | u1

public | postgres

sport | u1

授權某個模式下的物件訪問許可權給其它使用者,則需要先授權訪問該模式的許可權給其它使用者

GRANT USAGE ON SHEMA sch_name TO role_name;

GRANT SELECT ON sch_name.tab_name TO role_name;

刪除模式,模式只能由其擁有者或超級使用者刪除

drop schema schema_name;

刪除模式時同時刪除所依賴的物件

drop schema chema_name cascade;

7.4、Public模式

初始化資料庫時會自動建立一個Public模式,共享給所有使用者使用,任何使用者都可以把物件建立在該模式下,由於PostgreSQL下一個使用者對應多個模式,建立用 戶時沒有建立對應的預設模式,而物件都是基於模式管理的,所以建立一個公用 的模式public。

基於資料庫安全考慮,可以刪除public模式(可選)。

7.5、模式使用建議

Oracle資料庫一個使用者對應一個模式,且名字一樣。

PostgreSQL資料庫可以規劃成一個使用者對應多個模式。

基於簡化管理的目的,可以規劃成一個使用者對應一個與使用者名稱一樣的模式。

PostgreSQL技術大講堂 - Part 7:PG使用者schema相互關係

以上就是Part 7 - PG使用者與模式 的內容,大家可以進群一起探討,釘釘交流群:35,82,24,60,往期影片可以聯絡cuug諮詢老師


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31544987/viewspace-2937865/,如需轉載,請註明出處,否則將追究法律責任。

相關文章