Chapter 21. Database Roles 列出了 PostgreSQL 的默认角色。但是我在那里找不到用户
postgres
, 已在 PostgreSQL 中默认创建。postgres
是一个 默认角色?是手册漏掉了还是我误解了?在 PostgreSQL 中,
postgres
是特殊用户,还是普通用户 像一个手动创建的? PostgreSQL 服务器是否需要用户postgres
?删除它是否会对服务器或其他方面造成一些麻烦?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)
最佳答案
postgres
不是默认角色。当您使用
initdb
创建PostgreSQL 数据库集群时,您可以使用-U
选项指定安装 super 用户的名称。如果省略该选项, super 用户的名称将与您正在使用的操作系统用户的名称相同。由于习惯上让
initdb
PostgreSQL 由操作系统用户postgres
运行, super 用户通常也被称为postgres
,但是没有任何要求。postgres
和其他人一样只是一个普通的 super 用户。您将很难删除它,因为它拥有所有系统对象,并且您无法轻易修改这些对象。建议您不要尝试。
pg_read_all_settings
和其他不会出现在pg_user
中,因为它们不是登录角色。
关于postgresql - "postgres"是 PostgreSQL 的默认和特殊用户吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50883645/