0

yum我已经按照网站上的 Postgres 说明在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密码。据我了解,此帐户是在初始化时创建的,并且没有密码,但不接受仅按 Enter 键。

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

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

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

如何正确重新加载数据库以便postgresql.conf实施我的更改?

4

1 回答 1

1

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

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

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

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

您可能应该阅读有关客户端身份验证用户管理的 PostgreSQL 文档。

于 2019-03-14T09:03:59.330 回答