在创建数据库之前,Postgres中有一个pg_roles表吗?

时间:2015-08-22 01:09:24

标签: database postgresql database-connection roles

我正在研究Postgres,在阅读时我发现您可以通过输入以下内容检查createuser表中是否已存在用户名(在命令行中使用pg_roles命令时使用)

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

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

1 个答案:

答案 0 :(得分:2)

实际上,pg_roles是一种观点。 The documentation:

  

这只是一个公开可读的pg_authid视图,其中显示了密码字段。

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

  

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