Postgresql 如何让pg_ctl重新加载工作?请求postgres用户';的密码,但不接受它

Postgresql 如何让pg_ctl重新加载工作?请求postgres用户';的密码,但不接受它,postgresql,postgresql-11,Postgresql,Postgresql 11,我已经按照Postgres网站上的说明,使用yum在CentOS 7虚拟机上安装了PostgreSQL 11。安装之后,我做到了 /usr/pgsql-11/bin/postgresql-11-setup initdb systemctl enable postgresql-11 systemctl start postgresql-11 然后去配置postgresql.conf文件 现在我需要重新加载数据库,以便这些更改生效 我尝试使用postgres帐户sudo pg_ctl reload

我已经按照Postgres网站上的说明,使用
yum
在CentOS 7虚拟机上安装了PostgreSQL 11。安装之后,我做到了

/usr/pgsql-11/bin/postgresql-11-setup initdb
systemctl enable postgresql-11
systemctl start postgresql-11
然后去配置
postgresql.conf
文件

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

我尝试使用
postgres
帐户
sudo pg_ctl reload
,然后提示我输入
postgres
的密码。据我所知,该帐户是在初始化时创建的,并没有密码,但不接受只按enter键

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

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

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


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

您在许多层面上都感到困惑

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

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

  • 您以操作系统用户
    postgres
    的身份运行
    pg\u ctl reload
    ,而不是以
    root
    的身份运行,因为
    postgres
    拥有PostgreSQL进程,因此不需要
    sudo
    ,也不需要操作系统密码


  • 您可能应该阅读关于和的PostgreSQL文档。

    如果
    systemctl restart postgres-11
    使您的安装“中断”,那么您可能对
    PostgreSQL.conf
    做了一些不正确的更改,现在postgres拒绝启动。您是否尝试恢复这些更改,然后重新启动服务?我的建议是不要直接编辑
    postgresql.conf
    ,而是添加一个包含所有更改的
    custom.conf
    ,然后将其包含在
    postgresql.conf
    的末尾,这样您就可以随时知道更改了什么,您可以通过不包含自定义配置文件轻松恢复。感谢您的澄清。在
    pg_ctl
    命令之前使用
    sudo
    似乎是个问题。此外,我还需要重新启动pg_ctl,而不是重新加载。尽管我用
    -D
    标志澄清了数据目录,但它还是输出了一行,表示权限被拒绝,无法更改到目录“my current directory”,但重新加载仍然有效。