/etc/services
jest tylko doradcą, jest to lista dobrze znanych portów. Nie oznacza to, że cokolwiek faktycznie działa na tym porcie lub że nazwana usługa będzie działać na tym porcie.
W przypadku PostgreSQL typowym jest użycie portu 5432, jeśli jest dostępny. Jeśli tak nie jest, większość instalatorów wybierze następny wolny port, zwykle 5433.
Możesz zobaczyć, co faktycznie działa, używając netstat
narzędzie (dostępne w systemach OS X, Windows i Linux, ze składnią wiersza poleceń różniącą się we wszystkich trzech).
Jest to jeszcze bardziej skomplikowane w systemach Mac OS X przez okropny bałagan różnych pakietów PostgreSQL – starożytna wersja PostgreSQL firmy Apple wbudowana w system operacyjny, Postgres.app, Homebrew, Macports, instalator EnterpriseDB itp.
To, co się kończy, to fakt, że użytkownik instaluje Pg i uruchamia serwer z jednego opakowania, ale używa psql
i libpq
klient z innego opakowania. Zwykle dzieje się tak, gdy uruchamiają Postgres.app lub homebrew Pg i łączą się z psql
dostarczane z systemem operacyjnym. Nie tylko czasami mają one różne domyślne porty, ale Pg dostarczany z Mac OS X ma inną domyślną ścieżkę gniazda unixowego , więc nawet jeśli serwer działa na tym samym porcie, nie będzie nasłuchiwał tego samego gniazda uniksowego.
Większość użytkowników Maca obejdzie ten problem, używając tcp/ip z psql -h localhost
. Możesz również określić port, jeśli jest to wymagane, np. psql -h localhost -p 5433
. Możesz mieć uruchomionych wiele instancji PostgreSQL, więc upewnij się, że łączysz się z właściwą, używając select version()
i SHOW data_directory;
.
Możesz także określić katalog gniazd uniksowych; sprawdź unix_socket_directories
ustawienie instancji PostgreSQL, z którą chcesz się połączyć, i określ to za pomocą psql -h
, np.psql -h /tmp
.
Czystszym rozwiązaniem jest poprawienie systemu PATH
aby psql
i libpq
powiązane z PostgreSQL, którego faktycznie używasz, jest tym, co znajduje się jako pierwsze w PATH
. Szczegóły zależą od wersji systemu Mac OS X i zainstalowanych pakietów Pg. Nie używam Maca i nie mogę zaoferować o wiele więcej szczegółów po tej stronie, nie poświęcając więcej czasu niż jest to obecnie dostępne.