Как запустить PostgreSQL-сервер в Mac OS X?
ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ:
Я забыл запустить команду initdb
.
</FINAL UPDATE>
запустив эту команду
ps auxwww | grep postgres
Я вижу, что Postgres не работает
> ps auxwww | grep postgres
remcat 1789 0.0 0.0 2434892 480 s000 R+ 11:28PM 0:00.00 grep postgres
возникает вопрос: как мне запустить сервер postgresql?
Обновить:
>pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
sh: /usr/local/var/postgres/server.log: No such file or directory
обновление 2:
Касание не было успешным, поэтому я сделал это вместо:
> mkdir /usr/local/var/postgres
> vi /usr/local/var/postgres/server.log
> ls /usr/local/var/postgres/
server.log
Но когда я пытаюсь запустить сервер rails, я все еще вижу это:
Is the server running on host "localhost" and accepting
TCP/IP connections on port 5432?
обновление 3:
> pg_ctl -D /usr/local/var/postgres status
pg_ctl: no server running
обновление 4:
Я обнаружил, что там не было pg_hba.conf (только pg_hba.conf.sample), поэтому я изменил образец и переименовал его (чтобы удалить .sample). Вот содержимое:
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
но я не понимаю этого
> pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
> pg_ctl -D /usr/local/var/postgres status
pg_ctl: no server running
также:
sudo find / -name postgresql.conf
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
обновление 5:
sudo pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Password:
pg_ctl: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will own the server process.
обновление 6:
это кажется странным
> egrep 'listen|port' /usr/local/var/postgres/postgresql.conf
egrep: /usr/local/var/postgres/postgresql.conf: No such file or directory
хотя я сделал это:
>sudo find / -name "*postgresql.conf*"
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
/usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample
/usr/share/postgresql/postgresql.conf.sample
поэтому я сделал это:
egrep 'listen|port' /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample
#listen_addresses = 'localhost' # what IP address(es) to listen on;
#port = 5432 # (change requires restart)
# supported by the operating system:
# %r = remote host and port
поэтому я попробовал это:
> cp /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf
> cp /usr/share/postgresql/postgresql.conf.sample /usr/share/postgresql/postgresql.conf
по-прежнему получает тот же "Сервер работает?" сообщение.
Ответы
Ответ 1
Диспетчер пакетов Homebrew включает списки launchctl для автоматического запуска. Для получения дополнительной информации запустите brew info postgres
.
Начать вручную:
pg_ctl -D/usr/local/var/postgres start
Остановить вручную:
pg_ctl -D/usr/local/var/postgres stop
Начать автоматически:
Msgstr "Чтобы запустить, запустите postgresql сейчас и перезапустите при входе в систему:"
brew services start postgresql
Каков результат pg_ctl -D/usr/local/var/postgres -l/usr/local/var/postgres/server.log start
?
Каков результат pg_ctl -D/usr/local/var/postgres status
?
Есть ли сообщения об ошибках в server.log?
Убедитесь, что локальные соединения tcp включены в pg_hba.conf:
# IPv4 local connections:
host all all 127.0.0.1/32 trust
Проверьте listen_addresses и порт в postgresql.conf:
egrep 'listen|port'/usr/local/var/postgres/postgresql.conf
#listen_addresses = 'localhost' # what IP address(es) to listen on;
#port = 5432 # (change requires restart)
Убираться
Postgres, скорее всего, был установлен через Homebrew, Fink, MacPorts или установщик EnterpriseDB.
Проверьте вывод следующих команд, чтобы определить, с каким менеджером пакетов он был установлен:
brew && brew list|grep postgres
fink && fink list|grep postgres
port && port installed|grep postgres
Ответ 2
Если вы хотите вручную запустить и остановить postgresql (установленный через homebrew), самый простой способ:
brew services start postgresql
и
brew services stop postgresql
Ответ 3
У меня была почти такая же проблема, и вы указали команду initdb как исправление. Это также было для меня решением, но я не видел, чтобы кто-то разместил его здесь, поэтому для тех, кто ищет его:
initdb /usr/local/var/postgres -E utf8
Ответ 4
Если ваш компьютер был внезапно перезапущен
Сначала вы должны удалить файл /usr/local/var/postgres/postmaster.pid
Затем вы можете перезапустить службу, используя один из многих других упомянутых методов в зависимости от вашей установки.
Вы можете проверить это, просмотрев журналы Postgres, чтобы узнать, что может происходить: tail -f /usr/local/var/postgres/server.log
Ответ 5
Другой подход заключается в использовании lunchy gem (обертки для launchctl):
brew install postgresql
initdb /usr/local/var/postgres -E utf8
gem install lunchy
Для запуска postgres:
lunchy start postgres
Чтобы остановить postgres:
lunchy stop postgres
Для получения дополнительной информации обратитесь к: " Как установить PostgreSQL на Mac с Homebrew и Lunchy "
Ответ 6
Здесь мои 2 цента: я сделал псевдоним для postgres pg_ctl и поместил его в .bash_profile (моя версия postgresql - 9.2.4, а путь к базе данных -/Library/PostgreSQL/9.2/data).
alias postgres.server="sudo -u postgres pg_ctl -D /Library/PostgreSQL/9.2/data"
Запустите новый терминал.
А потом? Вы можете запустить/остановить свой сервер postgresql следующим образом:
postgres.server start
postgres.server stop
Ответ 7
Самый чистый путь для запуска/остановки/перезапуска postgres, если вы установили его через brew
, - это просто выгрузить и/или загрузить файл конфигурации запуска, который поставляется с установкой:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Первая строка остановит postgres, и вторая строка запустит ее. Не нужно указывать какие-либо каталоги данных и т.д., Поскольку все в этом файле.
Ответ 8
Чтобы запустить сервер postgresql:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
чтобы завершить сервер postgresql:
pg_ctl -D /usr/local/var/postgres stop -s -m fast
Вы также можете создать псевдоним через CLI, чтобы упростить его:
alias pg-start='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start'
alias pg-stop='pg_ctl -D /usr/local/var/postgres stop -s -m fast'
С их помощью вы можете просто ввести "pg-start", чтобы запустить Postgres и "pg-stop", чтобы закрыть его.
Ответ 9
В целях тестирования я считаю, что приложение PostgreSQL - лучший вариант!
Запустите приложение, и сервер запущен и работает.
Закройте приложение, и сервер опустится.
http://postgresapp.com/
Ответ 10
когда вы устанавливаете postgresql с помощью homebrew:
brew install postgres
в конце вывода вы увидите, что эти методы запускают сервер:
To have launchd start postgresql at login:
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
Then to load postgresql now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Or, if you don't want/need launchctl, you can just run:
postgres -D /usr/local/var/postgres
Я думаю, что это лучший способ.
Вы можете добавить псевдоним в свой .profile для удобства.
Ответ 11
Для быстрой одноразовой тестовой базы данных вы можете запустить сервер на переднем плане.
Инициализировать новую базу данных postgres в новом каталоге
mkdir db
initdb db -E utf8
createdb public
Запустите сервер на переднем плане (ctrl-C, чтобы остановить сервер)
postgres -d db
В другом сеансе оболочки подключитесь к серверу
psql -d public
Ответ 12
У меня такая же проблема и выполняю все обновления с первого сообщения. Но после файла журнала проверки:
/usr/local/var/postgres/server.log
Я вижу истинную причину:
FATAL: data directory "/usr/local/var/postgres" has group or world access
DETAIL: Permissions should be u=rwx (0700).
После изменения разрешения в этом каталоге
chmod 0700 /usr/local/var/postgres
сервер postgres запущен.
Каждый раз проверяйте файл журнала.
Ответ 13
Вариация этого ответа: fooobar.com/questions/12561/...
initdb 'brew --prefix'/var/postgres/data -E utf8'' && pg_ctl -D /usr/local/var/postgres/data -l logfile start
Ответ 14
PostgreSQL интегрирован в Server.app, доступный через App Store в Mountain Lion. Это означает, что он уже настроен, и вам нужно только запустить его, а затем создать пользователей и базы данных.
Совет. Не начинайте с определения $PGDATA и т.д., возьмите файлы, как есть.
У вас будет этот файл:
/Library/Server/PostgreSQL/Config/org.postgresql.postgres.plist
Чтобы начать:
sudo serveradmin start postgres
Процесс начался с аргументов:
/Applications/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D/Library/Сервер/PostgreSQL/Данные -c listen_addresses = 127.0.0.1,:: 1 -c log_connections = on -c log_directory =/Library/Журналы/PostgreSQL -c log_filename = PostgreSQL.log -c log_line_prefix =% t -c log_lock_waits = on -c log_statement = ddl -c logging_collector = on -c unix_socket_directory =/private/var/pgsql_socket -c unix_socket_group = _postgres -c unix_socket_permissions = 0770
Вы можете sudo:
sudo -u _postgres psql template1
Или подключиться:
psql -h localhost -U _postgres postgres
Вы можете найти каталог данных, версию, статус запуска и т.д. с помощью
sudo serveradmin fullstatus postgres
Ответ 15
В целях развития одним из простейших способов является установка Postgres.app с официального сайта . Его можно запустить/остановить из папки "Программы" или с помощью следующих команд в терминале:
# start
open -a Postgres
# stop
killall Postgres
killall postgres
Ответ 16
# remove old database files (If there was any)
$rm -rf /usr/local/var/postgres # install the binary
$ brew install postgresql
# init it
$ initdb /usr/local/var/postgres
# start the postgres server
$ postgres -D /usr/local/var/postgres
# create your database
$ createdb mydb
# Access db.
$ psql mydb
psql (9.0.1)
Type "help" for help.
Ответ 17
Если вы установили с помощью brew, ниже команды должно быть достаточно.
brew services restart postgresql
И это иногда может не сработать, в этом случае ниже две команды должны определенно работать
rm /usr/local/var/postgres/postmaster.pid
pg_ctl -D /usr/local/var/postgres start
Ответ 18
$ brew upgrade postgres
исправил это для меня.
Это, конечно же, обновит вашу версию postgres и обновит/установит любые зависимости. ПРЕДУПРЕЖДЕНИЕ: знайте, что ваша версия postgresql, скорее всего, изменится. Для меня это не было большой проблемой.
Ответ 19
Ни один из вышеперечисленных ответов не устранил проблему, несмотря на получение одинаковых сообщений об ошибках. Мне удалось вернуть мой экземпляр и запустить его, удалив существующий файл postmaster.pid, который был заблокирован и не разрешил подключения.
Ответ 20
Для macports просто используйте команду load/unload и имя порта работающего сервера:
sudo port load postgresql96-server
- or -
sudo port unload postgresql96-server
так что вам не нужно помнить, где /Library/LaunchDaemons/org.macports.postgresql96.plist
файл /Library/LaunchDaemons/org.macports.postgresql96.plist
Ответ 21
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
https://hub.docker.com/_/postgres
Ответ 22
Если вы установили Postgres с помощью установщика EnterpriseDB, то, что предложил @Kenial, это путь.
sudo -u postgres pg_ctl -D /Library/PostgreSQL/{version}/data start
sudo -u postgres pg_ctl -D /Library/PostgreSQL/{version}/data stop
Ответ 23
Для Mac/OSX мне очень нравится LaunchRocket для этого и других фоновых сервисов, которые я использовал в разработке.
https://github.com/jimbojsb/launchrocket
На этом сайте есть хорошие инструкции по установке:
http://macappstore.org/launchrocket/
Это дает вам хороший экран в ваших системных настройках, который позволяет запускать, перезагружать, запускать root при запуске.
Ответ 24
Это работало для меня каждый раз, вдохновленный Крейгом Рингером:
brew install proctools
sudo pkill -u postgres
proctools включает в себя pkill. Если у вас нет Brew: https://brew.sh/
Ответ 25
Для полноты картины: проверьте, находитесь ли вы в экземпляре Tmux
или Screen
, запуск не будет работать оттуда.
От: https://superuser.com/questions/879640/error- while-try-to-start-postgres-installed-via-homebrew-operation-not-permi/898585
Это решило это для меня.
Ответ 26
Есть некоторые крайние случаи, которые, возможно, будут полезны для кого-то:
Существует вариант, что у вас будет postgres.pid, заполненный некоторым PID. Но если вы перезагрузите компьютер, и до того, как postgress вернется снова, какой-то другой процесс примет этот PID. Если это произойдет, и pg_ctl status, и служба brew, спросив о статусе postgres, сообщат вам, что это UP. Просто PS AUX | grep и проверь, действительно ли это postgress
Ответ 27
это сработало для меня (macOS 10.13)
sudo -u postgres /Library/PostgreSQL/9.6/bin/pg_ctl start -D /Library/PostgreSQL/9.6/data
или первый
cd /Library/PostgreSQL/9.6/bin/