BREW PostgreSQL启动,但进程未运行 [英] Brew Postgresql Starts But Process Is Not Running

查看:21
本文介绍了BREW PostgreSQL启动,但进程未运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在Mac上安装了Postgres Via Brew。然后,我尝试启动它

| => 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 services还会生成以下

| => 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管理器不同,在大多数brew命令中,MacOS上的Homebrew不需要root特权。唯一例外是sudo brew services启动服务时侦听端口<;1024。

回答您的问题:您将sudo brew services的文件权限搞乱了。

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

### Run in Bash or Zsh

# Stop postgresql
sudo brew services stop postgresql
# In case service file is copied to ~/Library/LaunchAgents as well
brew services stop postgresql

# Fix permission of homebrew files
sudo chown -R $USER:admin $(brew --prefix)/*

# Remove socket like `/tmp/.s.PGSQL.5432`

# Restart postgresql without sudo
brew services start postgresql

除上述修复外,您可能还需要

  • 从psql 12->进行数据库迁移,请查看brew info postgresl以了解详细信息
  • 手动启动psql并检查启动日志
# Change /usr/local to /opt/homebrew on M1 Mac
# Check the start log
pg_ctl -D /usr/local/var/postgres start

# to stop it
pg_ctl -D /usr/local/var/postgres stop

sudo和BREW

我不是说postgresql不能以根用户身份启动,但是brew servicesbrew services不是为与sudo一起使用而设计的。

sudo brew services将某些文件的所有者更改为root。你最好把它们换回属于你自己的。

这里有一个示例(请检查警告部分)

❯ 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)

sudo brew services不够智能,无法自动将文件的原始Bach更改为$USER

我已经为此编写了一个脚本:brew-fix-perm。但在你的情况下,这是不够的。您必须在$(brew --prefix)/var/postgres下更改Postgres配置文件的所有权。这就是为什么我把sudo chown -R $USER:admin $(brew --prefix)/*

相关答案

我知道有个顽固的家伙坚持用sudo brew services来启动MySQL。关于brew services的更详细的回答是there。您可能需要检查一下。

这篇关于BREW PostgreSQL启动,但进程未运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆