/etc/services
е само препоръка, това е списък на добре познати портове. Това не означава, че нещо всъщност работи на този порт или че наименуваната услуга ще работи на този порт.
В случая на PostgreSQL е типично да се използва порт 5432, ако е наличен. Ако не е, повечето инсталатори ще изберат следващия безплатен порт, обикновено 5433.
Можете да видите какво всъщност работи с помощта на netstat
инструмент (достъпен за OS X, Windows и Linux, като синтаксисът на командния ред варира и в трите).
Това се усложнява допълнително при системите Mac OS X от ужасната бъркотия на различни пакети PostgreSQL – древната версия на PostgreSQL на Apple, вградена в ОС, Postgres.app, Homebrew, Macports, инсталатора на EnterpriseDB и т.н.
Това, което в крайна сметка се случва, е, че потребителят инсталира Pg и стартира сървър от един пакет, но използва psql
и libpq
клиент от друга опаковка. Обикновено това се случва, когато изпълняват Postgres.app или homebrew Pg и се свързват с psql
които се доставят с ОС. Те не само, че понякога имат различни портове по подразбиране, но и Pg, който се доставя с Mac OS X, има различен пътека на unix сокет по подразбиране , така че дори сървърът да работи на същия порт, той няма да слуша същия unix сокет.
Повечето потребители на Mac заобикалят това, като просто използват tcp/ip с psql -h localhost
. Можете също да посочите порт, ако е необходимо, например psql -h localhost -p 5433
. Може да имате няколко екземпляра на PostgreSQL, така че се уверете, че се свързвате с правилния, като използвате select version()
и SHOW data_directory;
.
Можете също да посочите директория на unix сокет; проверете unix_socket_directories
настройка на екземпляра на PostgreSQL, към който искате да се свържете, и го посочете с psql -h
, напр.psql -h /tmp
.
По-чисто решение е да коригирате системния PATH
така че psql
и libpq
свързано с PostgreSQL, който всъщност изпълнявате, е това, което се намира първо в PATH
. Подробностите за това зависят от вашата версия на Mac OS X и кои Pg пакети сте инсталирали. Не използвам Mac и не мога да предложа много повече подробности от тази страна, без да отделям повече време, отколкото е налично в момента.