在创建数据库之前,Postgres 中怎么会有 pg_roles table?
How is there a pg_roles table in Postgres before a database is created?
我正在研究 Postgres,在阅读时我发现您可以检查用户名(在命令行中使用 createuser
命令时使用)是否已经存在于 pg_roles
table 通过输入:
psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'"
进入命令行。我只是想知道,如果我还没有创建自己的数据库,怎么会有像 pg_roles
这样的现有 table,它们在哪里 stored/how 创建的?
其实pg_roles
是一个观点。 The documentation:
This is simply a publicly readable view of pg_authid
that blanks out the password field.
并且pg_authid
不依赖于任何特定的数据库。它是在您创建数据库集群时创建的。 The documentation once more:
Because user identities are cluster-wide, pg_authid
is shared across
all databases of a cluster: there is only one copy of pg_authid
per
cluster, not one per database.
我正在研究 Postgres,在阅读时我发现您可以检查用户名(在命令行中使用 createuser
命令时使用)是否已经存在于 pg_roles
table 通过输入:
psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'"
进入命令行。我只是想知道,如果我还没有创建自己的数据库,怎么会有像 pg_roles
这样的现有 table,它们在哪里 stored/how 创建的?
其实pg_roles
是一个观点。 The documentation:
This is simply a publicly readable view of
pg_authid
that blanks out the password field.
并且pg_authid
不依赖于任何特定的数据库。它是在您创建数据库集群时创建的。 The documentation once more:
Because user identities are cluster-wide,
pg_authid
is shared across all databases of a cluster: there is only one copy ofpg_authid
per cluster, not one per database.