配置更改后重新加载 PostgreSQL

Don*_*kby 22 postgresql ubuntu configuration

我对 pg_hba.conf 做了一些更改,我希望它们生效。我找到了几个地方,人们说我可以告诉 PostgreSQL 重新加载,但是列出了几种不同的技术,但没有一种对我有用。

我找到的最权威的参考是 pg_ctl 命令,但我不确定我的 PGDATA 文件夹在哪里。我会继续寻找。

我在 Ubuntu 8.10 上运行 PostgreSQL 8.3。

Tim*_*imo 19

尽管最初提出问题的人暗示他运行 Ubuntu 8.10 的人很多,但使用更高版本的 Ubuntu 也可能会在这里遇到问题。这实际上也可能适用于 8.10。我不知道,我没有任何 8.10 安装可以尝试使用..

好的,让我们切入正题。所以控制服务的很酷的“新”方法是使用service命令。因此,您可以使用以下命令重新加载配置:

service postgresql-8.3 reload
Run Code Online (Sandbox Code Playgroud)

自然,您需要拥有适当的权限,因此很可能需要在命令前添加类似sudosu -c root类似的内容:

sudo service postgresql-8.3 reload
或者
su -c root 'service postgresql-8.3 reload'

PS在 Ubuntu 文档中建议6.10 版本中已经完成了与这种新方法相关的一些事情,但是如果我理解正确的话,它直到 9.10 才被更广泛地使用。


小智 18

您可以通过连接到 pg 并发出命令来检查 PGDATA 的位置:

show data_directory;
Run Code Online (Sandbox Code Playgroud)

在 ubuntu 上,它通常是/var/lib/postgresql/8.3/main/.

此外,您还可以: /etc/init.d/postgresql-8.3 reload


小智 8

选项 1:从命令行 shell

su - postgres
/usr/bin/pg_ctl reload
Run Code Online (Sandbox Code Playgroud)

选项 2:使用 SQL

SELECT pg_reload_conf();
Run Code Online (Sandbox Code Playgroud)

使用任一选项都不会中断任何活动的查询或与数据库的连接,从而无缝地应用这些更改。


小智 5

这就能解决问题:

kill -HUP $(head -1 $PGDATA/postmaster.pid)
Run Code Online (Sandbox Code Playgroud)