哪个用户拥有 postgres 进程?

Which user own the postgres process?

我使用标准安装了 postgresql rdbms:

sudo apt-get install postgresql

现在我可以看到二进制文件了:

-rwxr-xr-x 1 root root  /usr/lib/postgresql/12/bin/postgres

这意味着 root 用户拥有它。

然而:在 docs

You will need to become the operating system user under which PostgreSQL was installed (usually postgres)

我必须切换到 postgres 用户才能连接到服务器以使用我的名字创建新的 role

那么谁能解释一下这个矛盾呢?还是我遗漏了什么?

当你这样做时:

sudo apt-get install postgresql

它正在以 root 用户身份安装包 (postgresql) 文件。安装还将创建一个系统用户 postgres。创建服务器集群时,将使用每个 Create cluster and it will be run as the postgres user per Running server 分配了 postgres 用户权限的文件来完成。事实上 Postgres 将拒绝 运行 作为 root 用户。要查看服务器是哪个用户 运行ning,请执行以下操作:

ps aux | grep postgres

现在除了系统用户 postgres 之外,还创建了数据库用户 postgres。并非必须成为系统用户 postgres 才能连接到数据库,您只需使用 -U postgrespsql 作为数据库用户 postgres 连接即可.

仅供参考,使用名称 postgres 作为用户是约定而非要求,因此您可能会在其他打包系统中看到一些例外情况。例如 MacOS 包 postgres.app 使名称成为您安装的系统用户名。