如何在OS X上重启PostgreSQL?

51

在OS X上,我无法找到使用命令行重启postgresql以应用pg_hba.conf中的更改。我尝试了来自网页和文档的各种命令。如何正确地执行操作?

编辑:尝试查找路径的响应如下:

TheKotik       73454   0.0  0.0  2619360    804   ??  S     7:20PM   0:01.57 /Applications/Postgres.app/Contents/Versions/9.6/bin/postgres -D /Users/TheKotik/Library/Application Support/Postgres/var-9.6 -p 5432
8个回答

81

如果您使用homebrew安装了Postgres,您也可以运行以下命令:

brew services restart postgres

17
错误:未安装postgresql公式。 - Renat Gatin
6
使用 brew services list 获取正确的服务名称,然后使用 brew services restart <service name> 命令来重启服务。例如:brew services restart postgresql@12 - Mahendran Mookkiah
2
对我来说,是这样的:'brew services restart postgresql@14'。使用你用 brew 安装时的包名。 - Bahman.A

40
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log restart

/usr/local/var/postgres是数据库存储区的位置,/usr/local/var/postgres/server.log是我的postgres日志文件。这里的操作词是最后一个单词restart。您也可以使用start启动服务。

通过运行ps aux | grep postgres | grep -- -D,您可以找到数据库存储区的位置。


3
pg_ctl:目录“/usr/local/var/postgres”不存在。 - user3475724
1
更新了我的帖子。 - azizj
2
啊,我刚才看到你的编辑了。尝试这个:pg_ctl -D /Users/TheKotik/Library/Application Support/Postgres/var-9.6 -l /Users/TheKotik/Library/Application Support/Postgres/var-9.6/server.log restart - azizj
pg_ctl:无法识别操作模式“Support/Postgres/var-9.6” - user3475724
3
请给这个参数加上引号:pg_ctl -D "/Users/TheKotik/Library/Application Support/Postgres/var-9.6" -l "/Users/TheKotik/Library/Application Support/Postgres/var-9.6/server.log" restart - azizj
5
pg_ctl:无法打开PID文件“/Library/PostgreSQL/9.6/data/postmaster.pid”:权限被拒绝。 - stackdave

16

为了使hba.conf的更改生效,您无需重新启动 - 只需重新加载即可。

在psql中运行select pg_reload_conf()

另外:

在psql中运行show data_directory以查找您的数据目录...


1
select pg_reload_conf() 没有效果。 - user3475724
那么你可能编辑了错误的HBA文件...在Posql中运行show hba_file来检查。 - Vao Tsun
非常感谢!我在将条目添加到 pg_hba.conf 后重新启动了机器...节省了很多时间...非常感谢。 - ELITE
当然没问题。我很乐意。 - Vao Tsun
2
{btsdaf} - Catman155

8

对于运行在macOS Catalina 10.15.7上的PostgreSQL 13.4,我的数据文件存储在不同的位置,因此需要使用不同的命令。

sudo -u postgres /Library/PostgreSQL/13/bin/pg_ctl -D /Library/PostgreSQL/13/data restart

我不确定为什么我的数据目录与其他人不同,但它能够奏效。我还需要使用该文件夹找到我的postgresql.conf文件。

sudo ls -l /Library/PostgreSQL/13/data/

1

通过运行以下命令切换到您机器上的postgres账户:

sudo -i -u postgres 

然后使用以下命令重新启动:/Library/PostgreSQL/{version}/bin/pg_ctl -D /Library/PostgreSQL/{version}/data restart


1

如果您想确保重新启动正确的Postgres版本(例如15版),并且您的Postgres未安装为服务,则可以使用pg_ctl命令并指定数据目录。您的数据目录在哪里?请按照以下步骤操作:

% psql
viglione=# SELECT name, setting, context FROM pg_settings WHERE category = 'File Locations';
       name        |                     setting                     |  context   
-------------------+-------------------------------------------------+------------
 config_file       | /opt/homebrew/var/postgresql@15/postgresql.conf | postmaster
 data_directory    | /opt/homebrew/var/postgresql@15                 | postmaster
 external_pid_file |                                                 | postmaster
 hba_file          | /opt/homebrew/var/postgresql@15/pg_hba.conf     | postmaster
 ident_file        | /opt/homebrew/var/postgresql@15/pg_ident.conf   | postmaster
(5 rows)

我喜欢将上下文列投射出来,以确认需要重新启动的设置。 如果值为postmaster,则必须使用pg_ctl restart而不是pg_ctl reload。 注意第二行中的data_directory。 然后,我们可以将其指定为pg_ctl restart的选项。 首先退出psql,然后在操作系统级别运行命令(请注意,由于我使用homebrew软件包管理器,在我的情况下,我不会使用此选项):

viglione# \q
% pg_ctl restart -D  /opt/homebrew/var/postgresql@15

假设我正在使用 Homebrew,它是一个系统服务,那么我会使用这个选项:

% brew services restart postgresql@15

1
适用于Mac
sudo -u postgres /Library/PostgreSQL/15/bin/pg_ctl -D /Library/PostgreSQL/15/data restart

对我来说很有效。

0

参考以上答案和评论:

使用以下命令获取Postgres的命令及其版本,该版本是由brew运行的:

brew services list

然后通过附加版本号来运行重启:

brew services restart postgresql@15

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接