在多个postgresql集群中创建角色

时间:2015-09-26 06:48:47

标签: database postgresql

我对PostgreSQL数据库很新。我们已经开始在一周前使用它作为我们项目要求的一部分。我们花了一段时间才了解数据库的架构。

阅读了很多文章和文件。我们理解了以下几点:

  1. PostgreSQL中的数据库集群是数据库的集合
  2. 使用数据库的默认安装,有一个名为main的默认群集,默认情况下会激活
  3. 我们可以通过以下命令在数据库中创建和启动新集群: pg_createcluster 9.2 cluster1 -d / usr / local / cluster1 --start
  4. 与MySQL中的用户不同,postgresql中的角色在创建时是群集范围的。即,每个群集可以具有不同的角色。使用以下内容创建角色: createuser --interactive
  5. 我已经将postgresql安装到我的ubuntu系统中。除了默认的“主”群集之外,我还创建了5个不同的群集。我可以使用pg_lsclusters命令列出它们。我想现在在每个集群中创建名为“test,test2,dev,dev2,live,live2”的不同角色。当我创建角色时,它不会问我应该在哪个角色中创建角色。

    此外,在对数据库执行任何操作时,如何选择我希望执行命令的特定群集。

1 个答案:

答案 0 :(得分:0)

名称"集群"在PostgreSQL中有点误导,因为它根本不是一个集群。集群本质上是运行PostgreSQL系统的用户所拥有的文件系统目录。目录下是文件和更多目录,其中包含与群集相关的所有数据。单个群集可以容纳多个数据库,所有这些数据库都由一个正在运行的PostgreSQL实例控制(此实例也可以称为postmaster)。 (群集可以使用表空间分布在不同的文件系统上,但除此之外,还有。)

您确实可以在单个系统上拥有多个群集,但PostgreSQL实例一次只能访问一个群集,在postmaster启动时在命令行中指定。其他集群可以被PostgreSQL的其他实例使用。

每个群集都可以包含多个数据库。群集还可以有多个role(用户,组),它们在群集上的所有数据库之间共享;角色永远不会在群集之间共享。现在在PostgreSQL中,您将使用命令CREATE ROLE来创建用户和组。它们具有相同的权限结构,基本区别在于用户可以登录数据库系统,而组则不能。

除非您的要求非常具体(即您必须在特定服务器发行版本上运行数据库,而在另一个服务器发行版本上运行另一个数据库),否则只能使用一个集群。