PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

postgresql port confusion 5433 o 5432?

/etc/services è solo un avviso, è un elenco di porte conosciute. Non significa che qualcosa sia effettivamente in esecuzione su quella porta o che il servizio denominato verrà eseguito su quella porta.

Nel caso di PostgreSQL è tipico usare la porta 5432 se è disponibile. In caso contrario, la maggior parte degli installatori sceglierà la prossima porta libera, in genere 5433.

Puoi vedere cosa è effettivamente in esecuzione usando netstat strumento (disponibile su OS X, Windows e Linux, con la sintassi della riga di comando che varia in tutti e tre).

Questo è ulteriormente complicato sui sistemi Mac OS X dall'orribile pasticcio di diversi pacchetti PostgreSQL:l'antica versione di PostgreSQL di Apple integrata nel sistema operativo, Postgres.app, Homebrew, Macports, il programma di installazione di EnterpriseDB, ecc.

Quello che succede è che l'utente installa Pg e avvia un server da un pacchetto, ma usa il psql e libpq cliente da una confezione diversa. In genere ciò si verifica quando eseguono Postgres.app o homebrew Pg e si connettono con psql fornito con il sistema operativo. Non solo questi a volte hanno porte predefinite diverse, ma il Pg fornito con Mac OS X ha un percorso socket unix predefinito diverso , quindi anche se il server è in esecuzione sulla stessa porta non ascolterà lo stesso socket unix.

La maggior parte degli utenti Mac aggira questo problema semplicemente usando tcp/ip con psql -h localhost . Puoi anche specificare una porta se necessario, ad esempio psql -h localhost -p 5433 . Potresti avere più istanze PostgreSQL in esecuzione, quindi assicurati di connetterti a quella giusta usando select version() e SHOW data_directory; .

Puoi anche specificare una directory socket Unix; controlla le unix_socket_directories impostazione dell'istanza PostgreSQL a cui desideri connetterti e specificarla con psql -h , ad esempio psql -h /tmp .

Una soluzione più pulita è correggere il PATH del tuo sistema in modo che psql e libpq associato al PostgreSQL che stai effettivamente eseguendo è ciò che viene trovato per primo su PATH . I dettagli di ciò dipendono dalla versione di Mac OS X e dai pacchetti Pg installati. Non uso il Mac e non posso offrire molti più dettagli su questo lato senza spendere più tempo di quello attualmente disponibile.