根据站点上的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
的更改?
答案 0 :(得分:1)
您在很多层面上都很困惑。
数据库用户与操作系统用户不同。
如果您在数据库中更改postgres
的密码,则操作系统用户仍然没有密码。
我看不到如何破坏数据库。也许您的pg_hba.conf
文件配置错误。
您以操作系统用户pg_ctl reload
的身份运行postgres
,而不是以root
的身份运行,因为postgres
拥有PostgreSQL进程,因此不需要{{ 1}},因此不需要操作系统密码。
您可能应该阅读有关client authentication和user management的PostgreSQL文档。