Как установить PostgreSQL 9.1 на OSX Lion - PullRequest
3 голосов
/ 20 февраля 2012

Я скачал PostgreSQL с официального сайта и запустил установщик .dmg. После этого я скачал pgadmin3, и я действительно могу подключиться к базе данных.

когда я запускаю 'psql', я получаю следующую ошибку:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting

После нескольких часов поиска в Google, я прочитал о некоторых проблемах $ PATH, поэтому я поместил это в мой .bashrc:

export PATH=/Library/PostgreSQL/9.1/bin:$PATH

Тем не менее, это не устраняет ошибку выше. После нескольких часов поисков я попытался запустить psql -l localhost -U postgres. Это дает еще одну ошибку:

psql: could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (fe80::1) and accepting
    TCP/IP connections on port 5432?

После еще одного поиска в Google я попытался отредактировать /Library/PostgreSQL/9.1/data/pg_hba.conf и заменил все вхождения md5 на trust.

Затем я изменил пользователя на postgres и выполнил 'pg_ctl stop' и 'pg_ctl start', переключился обратно на своего собственного пользователя и попытался подключиться снова, не повезло.

Вот еще немного информации:

[~]$ which psql
/Library/PostgreSQL/9.1/bin/psql

ps aux | grep postgres
postgres       19022   0.0  0.0  2446096    484   ??  Ss   11:31PM   0:00.01 postgres: stats collector process   
postgres       19021   0.0  0.0  2486532   1776   ??  Ss   11:31PM   0:00.01 postgres: autovacuum launcher process   
postgres       19020   0.0  0.0  2486400    576   ??  Ss   11:31PM   0:00.03 postgres: wal writer process   
postgres       19019   0.0  0.0  2486400    820   ??  Ss   11:31PM   0:00.05 postgres: writer process   
postgres       19017   0.0  0.0  2446096    356   ??  Ss   11:31PM   0:00.01 postgres: logger process   
postgres       19015   0.0  0.1  2486400   8216 s001  S    11:31PM   0:00.17 /Library/PostgreSQL/9.1/bin/postgres

sudo find / -name .s.PGSQL.5432
No file was found?!?

Обновление 1: В /etc/sysctl.conf я добавил значения, предложенные README установщика:

kern.sysv.shmmax=1610612736
kern.sysv.shmall=393216
kern.sysv.shmmin=1
kern.sysv.shmmni=32
kern.sysv.shmseg=8
kern.maxprocperuid=512

Перед этими настройками установщик завершает работу с ошибкой, после чего появляется мастер и устанавливает postgres (и снова, с помощью pgadmin3 работает, поэтому я предполагаю, что база данных работает нормально).

Ответы [ 2 ]

7 голосов
/ 20 февраля 2012

Запустите lsof на главном процессе для всего этого.В вашем случае это 19015 (показано с моим PID):

> sudo lsof -p 286 | awk '$5 == "unix" && $NF ~ /\// { print $NF }' 
/tmp/.s.PGSQL.5432

Вы можете отключить awk, но в основном он получает сокет UNIX, который прослушивает postgres.Оттуда вы можете использовать опцию -h для psql (но только включить каталог).

> psql -h /tmp template1                                                                                                                                                                                                                                                            
template1=# \q

Если это не сработает, вы можете проверить вывод lsof, чтобы показать вамкакой порт TCP он на самом деле слушает, и если он не 5432, используйте опцию -p для postgres

1 голос
/ 04 мая 2013

Если вы можете подключиться к базе данных через pgadmin3 , значит, ваша база данных работает.

(1) Я бы проверил, запустив netstat -an |grep 5432 в командной строке, как проверка паранойи.Вы находитесь в бизнесе, то есть фактически установили Postgresql, если получили следующее:

tcp4 0 0 * .5432 . LISTEN
tcp6 0 0 * .5432 . LISTEN
ffffff80133bfed8 stream 0 0 ffffff8013be8000 0 0 0 /tmp/.s.PGSQL.5432

(2) Говоря сам за себя, я обнаружил, что только запуск psql возвращает мне ваш psql сообщение об ошибке.Мне пришлось запустить

psql -h 127.0.0.1 -p 5432 [-d база данных] -U postgres

для подключения к базе данных.Другими словами, мне пришлось явно указать IP и порт.Так как вы смогли запустить psql и получить сообщение об ошибке без подключения, ОС понимает, что psql - это команда, и у вас нет проблем с маршрутизацией.

...