本文介紹如何處理操作對象無權限的問題。
RDS PostgreSQL沒有開放超級用戶,這給很多上云的用戶帶來困難,RDS PostgreSQL這樣做有如下原因:
- PostgreSQL的superuser擁有幾乎全部的數據庫權限,甚至可以直接修改系統表,潛在風險相當大。
- RDS PostgreSQL使用superuser運維實例,例如管理流復制、備份等這些操作,用戶是不需要關心的,換句話說它應該完全的交給云服務來處理。
- RDS PostgreSQL的普通用戶權限是能夠滿足應用需求的,用戶可以管理自己在云上的數據。
基本原則
- 一個普通用戶只能在自己作為owner(所有者)的數據庫下創建schema。
- 數據庫下的對象有一個所屬的schema,普通用戶可以在public下創建對象(如table),在其他schema下創建對象需要是schema的owner或有特別的授權。
- 管理一個數據庫對象,需要是對象的owner(在用戶組權限之外)。
常見問題及解決方法
在多用戶環境下,RDS PostgreSQL用戶容易遇到無法使用普通用戶管理其他普通用戶創建的對象,出現操作對象無權限的問題。
通??梢杂每刂婆_創建的高權限賬號創建管理員賬號,然后將子賬號的權限授予管理員賬號。使用這樣的用戶組可以做到使用一個管理員賬號管理所在組內的所有其他普通用戶及其對象,既可以管理多個用戶的對象,又可以實現一定程度上的權限隔離,同時權限又不會過大,推薦在云上使用該方式管理自己的實例。
說明 管理員賬號默認具有 INHERIT權限,INHERIT權限決定一個角色是否繼承它所在組的角色的權限。 一個帶有INHERIT屬性的角色可以自動使用已經賦與它直接或間接所在組的任何權限。
文檔內容是否對您有幫助?