Brew Postgresql启动,但进程未运行
我已经通过Brew在Mac上安装了Postgres。然后,我试着开始了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 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)