Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在多个postgresql集群中创建角色_Database_Postgresql - Fatal编程技术网

Database 在多个postgresql集群中创建角色

Database 在多个postgresql集群中创建角色,database,postgresql,Database,Postgresql,我对PostgreSQL数据库很陌生。我们一周前就开始使用它作为项目需求的一部分。我们花了一些时间来理解数据库的体系结构 读过许多文章和文件。我们理解了以下几点: PostgreSQL中的数据库集群是数据库的集合 在数据库的默认安装中,有一个名为main的默认集群,它在默认情况下被激活 我们可以通过以下命令在数据库中创建和启动新群集: pg_createcluster 9.2 cluster1-d/usr/local/cluster1——启动 与MySQL中的用户不同,postgresql中的角

我对PostgreSQL数据库很陌生。我们一周前就开始使用它作为项目需求的一部分。我们花了一些时间来理解数据库的体系结构

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

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

    此外,在数据库上执行任何操作时,如何选择要在其中执行命令的特定集群

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

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

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


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

    Cross post:Point 2目前仅在Debian/Ubuntu上适用,这是由于操作系统用来管理多个PostgreSQL实例和版本的
    pg_包装器
    工具,而不是PostgreSQL本身。谢谢@Patrick的回答。我应该自动执行一个密码轮换方案,其中有多台机器,每台机器都有一个集群及其角色集。我需要编写一个bash脚本,它可以远程连接到每个集群并更改角色的密码。为了模拟这个需求,我计划在同一台机器上创建5个集群,并在进行远程测试之前测试其功能