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

时间:2018-06-15 23:03:28

标签: postgresql

  1. https://www.postgresql.org/docs/10/static/default-roles.html列表 postgresql的默认角色。但我在那里找不到用户postgres, 这是在postgresql中默认创建的。是postgres a 默认角色?手册是否错过了,还是我误解了?
  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)
    
  4. 感谢。

2 个答案:

答案 0 :(得分:2)

  1. postgres不是默认角色。

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

    由于习惯使操作系统用户initdb运行postgres PostgreSQL,超级用户通常也称为postgres,但这绝不是必需的。

  2. postgres只是一个普通的超级用户。

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

  3. pg_read_all_settings其他人没有出现在pg_user中,因为他们没有登录角色。

答案 1 :(得分:1)

postgres是安装后第一个可用的用户。它是一个超级用户。但是,可以定义自己的超级用户,这些用户对postgres用户具有相同的权限。

用户是可以登录的角色。

没有登录权限的角色用于各种系统级别的使用,有时也用于通过继承来管理访问控制规则(例如,您可能有一个角色analysts和一个被授予成员资格的用户halanalysts角色)

因此pg_user仅返回能够登录数据库的角色。