2015-09-26 42 views
2

我對PostgreSQL數據庫相當陌生。作爲我們項目需求的一部分,我們已經開始在一週之後使用它。我們花了一段時間才瞭解數據庫的體系結構。在多個postgresql集羣中創建角色

看了許多文章和文件。我們已經瞭解了以下幾點:

  1. PostgreSQL中數據庫集羣是數據庫
  2. 與數據庫的默認安裝的集合,有一個叫主默認的簇這是默認
  3. 激活我們可以通過以下命令在數據庫中創建並啓動一個新集羣: pg_createcluster 9.2 cluster1 -d/usr/local/cluster1 --start
  4. 與MySQL中的用戶不同,postgresql中的角色在創建時屬於集羣範圍。即每個羣集可以具有不同的角色。角色創建使用以下內容: createuser --interactive

我已經安裝postgresql到我的ubuntu系統。除了默認的「主」集羣外,我還創建了5個不同的集羣。我可以使用pg_lsclusters命令列出它們。我現在想要在每個集羣中創建稱爲'test,test2,dev,dev2,live,live2'的不同角色。當我創建角色時,它不會問我應該創建角色的羣集。

而且對數據庫進行任何操作的情況下,我怎麼能選擇到我希望要執行我的命令特定集羣。

+0

交叉帖子:http://dba.stackexchange.com/questions/116231/create-roles-in-multiple-postgresql-cluster –

+0

第2點在Debian/Ubuntu目前是唯一的,因爲它是由於該操作系統用來管理多個PostgreSQL實例和版本的'pg_wrapper'工具,而不是PostgreSQL自身。 –

回答

0

在PostgreSQL的名字「集羣」是有點誤導,因爲它是不是一個真正的集羣在所有。集羣本質上是運行PostgreSQL系統的用戶擁有的文件系統目錄。目錄下是文件和更多包含與羣集有關的所有數據的目錄。一個集羣可以容納多個數據庫,所有這些數據庫都由一個運行的PostgreSQL實例控制(這個實例也可以被稱爲postmaster)。 (羣集可以使用表空間分佈在不同的文件系統上,但這裏除此之外)。

確實可以在單個系統上有多個羣集,但PostgreSQL實例一次只能訪問一個羣集,在postmaster啓動時在命令行中指定。其他集羣可以被PostgreSQL的其他實例使用。

每個集羣可以包含多個數據庫。一個集羣也可以有多個(用戶,組),它們在集羣上的所有數據庫之間共享;角色永遠不會在羣集之間共享。現在在PostgreSQL中,您可以使用命令CREATE ROLE來創建用戶和組。它們具有相同的權限結構,基本的區別是用戶可以登錄到數據庫系統,而組無法登錄。

除非你的要求是真的特定的(即你必須運行在特定的服務器發行版,另一個在另一臺服務器發行版的數據庫),你應該能夠只是一個單一集羣度日。

+0

感謝@Patrick尋求答案。我應該自動化一個密碼輪換方案,其中有多臺機器,每臺機器都有一個集羣及其角色集。我需要編寫一個bash腳本,它可以遠程連接到每個羣集並更改角色的密碼。 爲了模擬這個需求,我打算在同一臺機器上創建5個集羣並在去遠程之前測試功能 – user5241806