Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Brew Postgresql启动,但进程未运行_Postgresql_Macos_Homebrew_Psql - Fatal编程技术网

Brew Postgresql启动,但进程未运行

Brew Postgresql启动,但进程未运行,postgresql,macos,homebrew,psql,Postgresql,Macos,Homebrew,Psql,我已经通过Brew在Mac上安装了Postgres。然后,我试着开始了 | => brew services restart postgres Stopping `postgresql`... (might take a while) ==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql) ==> Successfully started `postgresql` (label: homeb

我已经通过Brew在Mac上安装了Postgres。然后,我试着开始了

| => brew services restart postgres
Stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)
之后,我检查进程是否正在运行

(base) ________________________________________________________________________________
| ~/ @ MacBook-Pro (user) 
| => ps -ef | grep postgres
  501 61568   561   0  5:00PM ttys000    0:00.00 grep postgres
此外,
brew服务
还产生以下功能

| => brew services
Name          Status  User Plist
dnsmasq       unknown root /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
emacs         stopped      
postgresql    error   root /Library/LaunchDaemons/homebrew.mxcl.postgresql.plist
postgresql@12 stopped      
rabbitmq      stopped      
unbound       stopped   

非常感谢您提供有关如何解决此问题的任何帮助。

与Linux中的内置pkg管理器不同,macOS上的Homebrew在执行大多数
brew
命令时不需要
root
权限。在端口<1024上启动服务侦听时,唯一的例外是
sudo-brew-services

回答您的问题:您使用
sudo-brew-services
搞乱了文件权限

该解决方案适用于x86 Mac。我还没有在M1 mac上测试过它。(Homebrew在x86 Mac上的
/usr/local
下存储相关文件,在M1 Mac下的
/opt/Homebrew
下存储相关文件。)

###在Bash或Zsh中运行
#停止postgresql
sudo brew服务停止postgresql
#如果服务文件也被复制到~/Library/LaunchAgents
brew服务停止postgresql
#修复自制文件的权限
sudo chown-R$用户:admin$(brew--前缀)/*
#删除类似`/tmp/.s.PGSQL.5432的套接字`
#不使用sudo重新启动postgresql
brew服务启动postgresql
除了上述修复,您可能还需要

  • 从psql 12->psql 13执行数据库迁移,有关详细信息,请查看
    brew info postgresl
  • 手动启动psql并检查启动日志
#在M1 Mac上将/usr/local更改为/opt/homebrew
#检查启动日志
pg_ctl-D/usr/local/var/postgres启动
#阻止它
pg_ctl-D/usr/local/var/postgres stop

sudo和brew 我并不是说
postgresql
不能以root用户身份启动,但是自制和
brew服务
并不是设计用于
sudo

并且
sudo-brew-services
将一些文件的所有者更改为
root
。你最好把它们换回来归你自己所有

下面是一个示例(检查警告部分)

sudo-brew-services
不够智能,无法自动将文件的onwer-bach更改为
$USER

我已经编写了一个脚本来执行此操作:。但这对你来说还不够。您必须在
$(brew--prefix)/var/postgres
下更改回postgres配置文件的所有权。这就是为什么我把
sudo chown-R$USER:admin$(brew--prefix)/*

相关答案 我认识一个顽固的家伙,他坚持使用
sudo-brew-services
来启动mysql。关于
brew服务
的更详细答案是。你可能需要检查一下

❯ sudo brew services start adguardhome
Warning: Taking root:admin ownership of some adguardhome paths:
  /usr/local/Cellar/adguardhome/0.106.3/bin
  /usr/local/Cellar/adguardhome/0.106.3/bin/AdGuardHome
  /usr/local/opt/adguardhome
  /usr/local/opt/adguardhome/bin
  /usr/local/var/homebrew/linked/adguardhome
This will require manual removal of these paths using `sudo rm` on
brew upgrade/reinstall/uninstall.
Warning: adguardhome must be run as non-root to start at user login!
==> Successfully started `adguardhome` (label: homebrew.mxcl.adguardhome)