后台
我是Postgres的新手,目前正在学习使用它的文档。我无法理解Postgres用户。
我注意到我可以在不输入任何密码的情况下运行psql postgres
,并且我有能力创建和修改用户。我正在尝试确定用户postgres没有密码是否正常,或者是否应该手动设置一个密码。
What I've Tried
我试图在Postgres 15文档中找到解释,但只能找到有限的解释here。文档是相当广泛的,所以尽管我尽了最大的努力,我还没有能够找到一个更好的解释。
我还找到了this question,上面的答案说你可以使用\du
来确定用户名。当我运行这个命令时,它输出我的计算机用户名而不是“postgres”,并表明我是超级用户。
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
ciesinsg | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
简单的问题
所以我的问题是这个postgres用户是什么,没有密码离开它安全吗?
附加信息
我使用的PostgresQL@15安装使用自制的M2 MBP。
我也明白,建议在新数据库中设置新用户并将其设置为所有者。我只是担心,如果我不采取预防措施,postgres用户缺乏身份验证可能会导致一个坏的行为者改变我现有的用户。
说明 *
这个问题是基于我对PostgreSQL入门文档的错误解释。我在没有编辑问题的情况下发布了这个澄清,以防其他人也有类似的困惑。psql postgres
实际上连接到postgres数据库,而不是postgres用户。根据Ardian的回复,this homebrew documentation概述了公式如何设置数据库和所有权。
1条答案
按热度按时间uqzxnwby1#
这是Postgres社区文档不包括的打包决定,因为这超出了他们的权限。当一个Postgres示例被设置时,有一个操作系统用户创建/拥有集群,还有一个数据库超级用户被创建来管理集群的启动。按照惯例,这两个用户都被命名为
postgres
。有关详细信息,请参阅initdb。这是一个约定,而不是一个要求,下游打包者可以创建自己的用户。在Homebrew的情况下,安装软件包的用户的用户名是拥有集群的OS用户。它还用于创建数据库超级用户名。根据psql文档运行psql postgres
时,您将以运行psql
的操作系统用户身份连接到postgres
数据库。在本例中,它与数据库超级用户名匹配。不需要密码,因为pg_hba.conf已设置为不需要本地连接的数据库密码。