Я установил PostgreSQL через MacPorts, но не могу получить к нему доступ - PullRequest
2 голосов
/ 30 сентября 2010

Как я уже сказал в заголовке, я установил PostgreSQL с MacPorts, но не могу получить к нему доступ.

Процесс установки был

$ sudo port install postgresql83-server
$ sudo mkdir -p /opt/local/var/db/postgresql83/webcraft
$ sudo chown postgres:postgres /opt/local/var/db/postgresql83/webcraft
$ sudo su postgres -c '/opt/local/lib/postgresql83/bin/initdb -D /opt/local/var/db/postgresql83/webcraft'
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql83-server.plist

Мой ПУТЬ

/opt/local/lib/postgresql83/bin:/opt/local/lib/mysql5/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Я пытаюсь подключить сервер с помощью psql клиента

$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Вот некоторая информация

$ ps ax | grep postgres | grep -v grep
   52   ??  Ss     0:00.00 /opt/local/bin/daemondo --label=postgresql83-server --start-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql83-server/postgresql83-server.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql83-server/postgresql83-server.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql83-server/postgresql83-server.wrapper restart ; --pid=none

Ответы [ 6 ]

10 голосов
/ 04 сентября 2012

Вы пробовали запустить:

which psql

Я полагаю, что psql все еще ссылается на /usr/bin/psql, а версия psql для macports имеет суффикс с номером версии, в вашем случае psql83. Вы можете использовать псевдоним psql для psql83 как простой обходной путь. Лучше было бы изменить значение по умолчанию:

sudo port select --set postgresql postgresql83

Это сделает правильную маршрутизацию.

7 голосов
/ 04 декабря 2015

Существует очень простое решение, но, на мой взгляд, оно недостаточно хорошо документировано:

MacPorts рекомендует устанавливать свои порты *_select для управления потенциально несколькими версиями программного обеспечения (скажем, вам нужны одновременно Postgres93 и Postgres94). Это отличная функция, но она добавляет дополнительный шаг, который по некоторым причинам редко упоминается в документации:

$ sudo port install postgresql94-server

Много неудачных попыток запустить сервер позже ..

$ sudo port install postgresql_select
$ sudo port select postgresql
Available versions for postgresql:
    none (active)
    postgresql94

Ну, это не может быть хорошо!

$ sudo port select postgresql postgresql94
$ sudo port load postgresql94-server

Ты издеваешься надо мной. Сейчас он работает?

Простая установка Postgres не полностью настраивает символические ссылки, чтобы сделать его легко запускаемым. Установка postrgresql_select дает MacPorts информацию, необходимую для этого через port select. Как только вы выбрали активную версию по вашему выбору, запустить сервер Posgres с помощью luanchctl так же просто, как port load postgresqlXX-server.

4 голосов
/ 23 февраля 2011

Я знаю, что это очень поздний ответ и он не отвечает на ваш полный вопрос, но launchctl будет показывать разные результаты в зависимости от того, являетесь ли вы суперпользователем или нет.

Попробуйте сделать:

sudo launchctl list | grep postgres

3 голосов
/ 23 марта 2011

У меня была точно такая же проблема на моем MacBook Pro.Я мог бы решить проблему после того, как поехал на этот пост здесь и все комментарии:

http://benscheirman.com/2010/06/installing-postgresql-for-rails-on-mac-os-x

Проблема в том, что postgres на самом деле не работает.Я узнал об этом после того, как произвел сканирование портов на своем компьютере, и понял, что на порту 5432 ничего не работает.

Я создал небольшой скрипт "start_pg_server.sh":

#!/bin/sh
sudo su postgres -c 'pg_ctl start -D /opt/local/var/db/postgresql83/defaultdb/'

послевыполняя этот скрипт, сервер работал, и я мог подключить меня к pgAdmin.Я также смог запустить мой рубиновый материал с помощью rake db: create и rake db: migrate.

2 голосов
/ 21 декабря 2014

После того, как я восстановил с помощью Timemachine, у меня возникла та же проблема.Причина была в том, что разрешения были искажены, и postgres не смог написать файл pid.Запуск этого решил для меня:

sudo chown -R postgres:postgres /opt/local/var/db/postgresql91/
sudo port unload postgresql91-server
sudo port load postgresql91-server
0 голосов
/ 08 июля 2011

Вы случайно не создали своего пользователя postgres с оболочкой / usr / bin / false?Если это так, сценарий запуска не будет работать, потому что он использует su, который передает команды, которые вы отправляете через оболочку.

Если вы установили его на / usr / bin / false, попробуйте изменить его на / bin /bash, и это может все исправить.

...