/etc/services
är endast rådgivande, det är en lista över välkända hamnar. Det betyder inte att något faktiskt körs på den porten eller att den namngivna tjänsten kommer att köras på den porten.
I PostgreSQL:s fall är det typiskt att använda port 5432 om den är tillgänglig. Om den inte är det kommer de flesta installatörer att välja nästa lediga port, vanligtvis 5433.
Du kan se vad som faktiskt körs med hjälp av netstat
verktyg (tillgängligt på OS X, Windows och Linux, med kommandoradssyntax som varierar mellan alla tre).
Detta kompliceras ytterligare på Mac OS X-system av den hemska röran av olika PostgreSQL-paket - Apples gamla version av PostgreSQL inbyggd i OS, Postgres.app, Homebrew, Macports, EnterpriseDB-installationsprogrammet, etc etc.
Det som till slut händer är att användaren installerar Pg och startar en server från ett paket, men använder psql
och libpq
klient från en annan förpackning. Vanligtvis inträffar detta när de kör Postgres.app eller homebrew Pg och ansluter med psql
som levererades med OS. Inte nog med att dessa ibland har olika standardportar, utan sidan som levererades med Mac OS X har en annan standardsökväg för unix-socket , så även om servern körs på samma port kommer den inte att lyssna på samma unix-uttag.
De flesta Mac-användare löser detta genom att bara använda tcp/ip med psql -h localhost
. Du kan också ange en port om det behövs, t.ex. psql -h localhost -p 5433
. Du kan ha flera PostgreSQL-instanser igång så se till att du ansluter till rätt instans genom att använda select version()
och SHOW data_directory;
.
Du kan också ange en unix-socketkatalog; kontrollera unix_socket_directories
inställning av PostgreSQL-instansen du vill ansluta till och ange den med psql -h
, t.ex. psql -h /tmp
.
En renare lösning är att korrigera ditt system PATH
så att psql
och libpq
kopplat till den PostgreSQL du faktiskt kör är det som hittas först på PATH
. Detaljerna för det beror på din Mac OS X-version och vilka Pg-paket du har installerat. Jag använder inte Mac och kan inte erbjuda mycket mer detaljer på den sidan utan att spendera mer tid än vad som är tillgängligt för närvarande.