postgres
,
这是在postgresql中默认创建的。是postgres
a
默认角色?手册是否错过了,还是我误解了?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)
感谢。
答案 0 :(得分:2)
postgres
不是默认角色。
使用initdb
创建PostgreSQL数据库群集时,可以使用-U
选项指定安装超级用户的名称。如果省略该选项,则超级用户的名称将与您正在使用的操作系统用户的名称相同。
由于习惯使操作系统用户initdb
运行postgres
PostgreSQL,超级用户通常也称为postgres
,但这绝不是必需的。
postgres
只是一个普通的超级用户。
您将无法删除它,因为它拥有所有系统对象,您无法轻松修改这些对象。建议您不要尝试。
pg_read_all_settings
其他人没有出现在pg_user
中,因为他们没有登录角色。
答案 1 :(得分:1)
postgres
是安装后第一个可用的用户。它是一个超级用户。但是,可以定义自己的超级用户,这些用户对postgres
用户具有相同的权限。
用户是可以登录的角色。
没有登录权限的角色用于各种系统级别的使用,有时也用于通过继承来管理访问控制规则(例如,您可能有一个角色analysts
和一个被授予成员资格的用户hal
到analysts
角色)
因此pg_user
仅返回能够登录数据库的角色。