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

时间:2019-03-14 00:15:44

标签: postgresql postgresql-11

根据站点上的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的密码。据我了解,此帐户是在初始化时创建的,并且没有密码,但是仅按Enter键是不可接受的。

然后我尝试通过从根目录执行su -u postgres psql postgres并在shell中执行ALTER USER postgres PASSWORD 'myPasswordHere';来更改密码,该外壳确实返回了ALTER ROLE作为确认。如上所述重试重载,新密码仍然不被接受。

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

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

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

1 个答案:

答案 0 :(得分:1)

您在很多层面上都很困惑。

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

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

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

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