“postgres”是 PostgreSQL 的默认特殊用户吗?

Tim*_*Tim 5 postgresql

  1. 第 21 章数据库角色列出了 PostgreSQL 的默认角色。但我在那里找不到用户postgres,该用户是 PostgreSQL 默认创建的。是postgres默认角色吗?是手册遗漏了还是我误解了?

  2. 在 PostgreSQL 中,是postgres特殊用户,还是像手动创建的普通用户一样?PostgreSQL 服务器需要用户吗postgres?删除它会不会给服务器带来一些麻烦或者其他什么问题?

  3. 在psql中运行的以下两个命令提供默认角色或用户名,其中都包含postgres. 为什么它们不同?

    # select usename from pg_catalog.pg_user;
    
     usename
    ----------
     postgres
    (1 row)
    
    # select rolname from pg_catalog.pg_roles;
    
           rolname
    ----------------------
     postgres
     pg_monitor
     pg_read_all_settings
     pg_read_all_stats
     pg_stat_scan_tables
     pg_signal_backend
    (6 rows)
    
    Run Code Online (Sandbox Code Playgroud)

Lau*_*lbe 5

  1. postgres不是默认角色。

    当您使用 创建 PostgreSQL 数据库集群时initdb,您可以使用 选项指定安装超级用户的名称-U。如果省略该选项,超级用户的名称将与您正在使用的操作系统用户的名称相同。

    由于习惯上initdb由操作系统用户运行 PostgreSQL postgres,因此通常也会调用超级用户postgres,但这并不是必需的。

  2. postgres与其他用户一样只是一个普通的超级用户。

    您将很难删除它,因为它拥有所有系统对象,并且您无法轻松修改这些对象。建议您不要尝试。

  3. pg_read_all_settings其他人不会出现,pg_user因为他们不是登录角色。