2016-01-03 32 views
1

我正在尋找解決方案如何創建一個postgres角色,它可以連接到所有數據庫(也是在角色之後創建的)。PostgreSQL - 只讀「超級用戶」

這通常是超級用戶可以做的事情,但在我的情況下,此用戶應該只對特定表具有隻讀訪問權限。

這可能嗎?

或者我每次添加新數據庫時都必須更新角色嗎?儘管表名ar總是相同的。

感謝

回答

2

市民可connect to PostgreSQL databases默認。

PostgreSQL將某些類型的對象的默認權限授予 PUBLIC。默認情況下,表中沒有授予PUBLIC權限, 列,模式或表空間。對於其他類型,授予PUBLIC的默認 權限如下:CONNECT和CREATE TEMP 數據庫表; EXECUTE特權的功能;和使用 權限的語言。

如果您使用的是pgAdminIII,並且您在對象瀏覽器中選擇了一個數據庫,那麼您將在SQL窗格中看到它。

GRANT CONNECT, TEMPORARY ON DATABASE sandbox TO public; 

可以change default privileges在某些類型的數據庫對象的使用alter default privileges。這不會影響現有的數據庫對象。按照通常的方式授予現有對象權限。

alter default privileges是「每個數據庫」語句;您無法更改尚未創建的數據庫的默認權限。

可以授予存在的表的特權。您可以 alter 默認所有尚未存在的表的權限。但你不能改變具有不存在的特定名稱的表的默認特權。

您可能可以在the template database的對象上設置合適的權限和默認值。然後,您創建的每個數據庫都將包含這些對象,權限和默認值。

+0

謝謝,我現在明白我想要什麼。但是好的,這樣我每次創建新的數據庫時都必須更新用戶。 – Vamiris

+0

取決於用戶是誰,以及您可以放入模板數據庫的內容。 –

相關問題