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