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);
創建成功。
作者:如魚得水
🍒如果您覺得博主的文章還不錯或者有幫助的話,請關注一下博主,如果三連點贊評論收藏就更好啦!謝謝各位大佬給予的支持!
- GaussDB數據類型轉換介紹
- 通過公網連接GaussDB數據庫實例
- GaussDB數據類型介紹
- 如何通過DAS連接GaussDB
- 企業級分佈式數據庫 - GaussDB介紹
- GaussDB 數據庫實驗環境搭建指導
- Tableau連接openGauss實踐
- 以學校數據模型為例,掌握在DAS下使用GaussDB
- openGauss數據庫共享存儲特性簡介
- openGauss數據庫源碼解析系列文章——備份恢復機制:openGauss增量備份技術(上)
- openGauss數據庫客户端接入認證詳解
- Excel連接openGauss數據庫實操
- openGauss數據庫源碼解析系列文章——備份恢復機制:openGauss全量備份技術
- 超市進銷存之openGauss數據庫的應用與實踐
- 在WPS表格裏製作連接到openGauss的實時刷新報表
- openGauss數據庫PostGIS 安裝與使用
- openGauss中Schema賦權小試
- openGauss Cluster Manager RTO Test
- 【我和openGauss的故事】openGauss獲獎項目講解
- openGauss易知易會的幾個實用特性