如何让 pg_ctl 重新加载工作?询问 postgres 用户的密码,但不接受

How to get pg_ctl reload to work? Asks for postgres user's password, but does not accept it

我已经按照站点上的 Postgres 说明使用 yum 在 CentOS 7 VM 上安装了 PostgreSQL 11。安装后,我做了

/usr/pgsql-11/bin/postgresql-11-setup initdb
systemctl enable postgresql-11
systemctl start postgresql-11

然后去配置 postgresql.conf 文件。

现在我需要重新加载数据库以使这些更改生效。

我尝试 sudo pg_ctl reload 使用 postgres 帐户,然后提示我输入 postgres 的密码。据我了解,此帐户是在初始化时创建的,没有密码,但不接受仅按回车键。

然后我尝试通过从 root 执行 su -u postgres psql postgres 并在 shell 执行 ALTER USER postgres PASSWORD 'myPasswordHere'; 中执行 return ALTER ROLE 作为确认来更改密码。如上所述重试重新加载,新密码仍未被接受。

然后我尝试以 root 身份执行 systemctl restart postgres-11,但这似乎完全破坏了数据库,不允许我执行涉及数据库的任何进程甚至访问 Postgres shell.

我不得不删除数据目录并重新运行上面的 initdb 命令以重新启动所有内容(并且 pg_ctl 命令仍然不接受我的密码)。

如何正确地重新加载数据库以实现对 postgresql.conf 的更改?

你在很多层面上都感到困惑。

  1. 数据库用户不同于操作系统用户。 如果在数据库中更改postgres的密码,操作系统用户仍然没有密码。

    不过我看不出这是如何破坏数据库的。也许您的 pg_hba.conf 文件配置错误。

  2. 您 运行 pg_ctl reload 作为操作系统用户 postgres,而不是 root,因为 postgres 拥有 PostgreSQL 进程,因此不需要 sudo,因此也不需要操作系统密码。

您可能应该阅读有关 client authentication and user management 的 PostgreSQL 文档。