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易知易會的幾個實用特性