Brew Postgresql запускается, но процесс не запускается

Я установил Postgres через Brew на Mac. Затем я попытался запустить его

      | => 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   

Любая помощь по устранению неполадок приветствуется.

2 ответа

В отличие от встроенного менеджера пакетов в Linux, Homebrew в macOS не требует привилегий в большинстве случаев. brewкоманда. Единственное исключение - когда вы запускаете прослушивание служб на порту <1024.

Ответ на ваш вопрос: вы испортили права доступа к файлу.

Решение работает для Mac x86. На Mac M1 не тестировал. (Homebrew хранит связанные файлы в /usr/local на x86 Mac под /opt/homebrew под M1 Mac.)

      ### 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

Помимо исправления, указанного выше, вам также может потребоваться

  • Сделайте миграцию db с psql 12 -> psql 13, проверьте 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

судо и варево

Я не говорю postgresql не может быть запущен как root, но Homebrew и не предназначены для работы с sudo.

И меняет владельца некоторых файлов на 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)

не настолько умен, чтобы изменить заголовок файлов на $USER автоматически.

Я написал для этого сценарий: brew-fix-perm. Но в вашем случае этого недостаточно. Вам необходимо вернуть права собственности на файлы конфигурации postgres в разделе $(brew --prefix)/var/postgres. Вот почему я положил sudo chown -R $USER:admin $(brew --prefix)/*.

Связанный ответ

Я знал упрямого парня, который придерживался sudo brew servicesчтобы запустить mysql. И более подробный ответ о brew servicesесть там. Вы можете получить чек.

Короткий ответ:

      brew services stop postgresql
sudo chown -R $(whoami) $(brew --prefix)/*
brew services start postgresql
Другие вопросы по тегам