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

标签 postgresql

  1. Chapter 21. Database Roles 列出了 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)
    

最佳答案

  1. postgres 不是默认角色。

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

    由于习惯上让 initdb PostgreSQL 由操作系统用户 postgres 运行, super 用户通常也被称为 postgres,但是没有任何要求。

  2. postgres 和其他人一样只是一个普通的 super 用户。

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

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

关于postgresql - "postgres"是 PostgreSQL 的默认和特殊用户吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50883645/

相关文章:

sql - Postgresql 函数返回多行

ruby-on-rails - 多个 worker 的 Rails DB Performance

sql - postgresql corr 聚合函数返回 null

postgresql - 如何使用 Terraform 销毁 RDS 中其他用户拥有的 Postgres 数据库?

sql - Postgres 中的 RIGHT() 函数不正确

sql - 使用嵌套 JSON 数组上的过滤器进行选择

sql - PostgreSQL 9.5 像电子表格一样优雅的查询

ruby-on-rails - group_by 之后的 ruby​​ on rails 求和字段

PostgreSQL 11.5 insert or update(每次操作都要添加字段值)

windows - 编码=ASCII;和编码= UNICODE;不要在 Npgsql 3 连接字符串中工作