2015-09-26 29 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