我正在研究Postgres,在阅读时我发现您可以通过输入以下内容检查createuser
表中是否已存在用户名(在命令行中使用pg_roles
命令时使用)
psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'"
进入命令行。我只是想知道,如果我还没有创建自己的数据库,那么现有的表格如pg_roles
,它们存储在哪里/它们是如何创建的?
答案 0 :(得分:2)
实际上,pg_roles
是一种观点。 The documentation:
这只是一个公开可读的
pg_authid
视图,其中显示了密码字段。
pg_authid
并不依赖于任何特定的数据库。它是在创建数据库集群时创建的。 The documentation once more:
由于用户身份是群集范围的,因此
pg_authid
是共享的 集群的所有数据库:每个pg_authid
只有一个副本 群集,而不是每个数据库一个。