【问题标题】:How is there a pg_roles table in Postgres before a database is created?在创建数据库之前,Postgres 中如何存在 pg_roles 表?
【发布时间】:2015-11-16 01:06:17
【问题描述】:

我正在研究 Postgres,在阅读时我发现您可以检查用户名(在命令行中使用 createuser 命令时使用)是否已经存在于 pg_roles 表中,方法是输入:

psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'"

进入命令行。我只是想知道,如果我还没有创建自己的数据库,那么如何已经存在像 pg_roles 这样的表以及它们存储在哪里/它们是如何创建的?

【问题讨论】:

    标签: database postgresql database-connection roles


    【解决方案1】:

    其实pg_roles是一个视图。 The documentation:

    这只是pg_authid 的公开可读视图,它会清除密码字段。

    并且pg_authid 不依赖于任何特定的数据库。它是在您创建数据库集群时创建的。 The documentation once more:

    因为用户身份是集群范围的,pg_authid 是共享的 一个集群的所有数据库:每个只有一个pg_authid 的副本 集群,而不是每个数据库一个。

    【讨论】:

      猜你喜欢
      • 2019-12-05
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      • 2022-12-10
      • 2021-05-31
      • 1970-01-01
      相关资源
      最近更新 更多