/etc/services
è solo consultivo, è un elenco di porte ben note. Ciò 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, di solito 5433.
Puoi vedere cosa è effettivamente in esecuzione utilizzando lo netstat
strumento (disponibile su OS X, Windows e Linux, con la sintassi della riga di comando che varia tra i tre).
Ciò è 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 EnterpriseDB, ecc. Ecc.
Ciò che finisce è che l'utente installa Pg e avvia un server da un pacchetto, ma utilizza il client psql
e libpq
da un pacchetto diverso. In genere ciò si verifica quando eseguono Postgres.app o homebrew Pg e si connettono con psql
quello fornito con il sistema operativo. A volte non solo queste 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
. È inoltre possibile specificare una porta, se necessario, ad es psql -h localhost -p 5433
. Potresti avere più istanze PostgreSQL in esecuzione, quindi assicurati di connetterti a quello giusto usando select version()
e SHOW data_directory;
.
È inoltre possibile specificare una directory socket unix; controllare l' unix_socket_directories
impostazione dell'istanza PostgreSQL alla quale si desidera connettersi e specificarla con psql -h
, ad es psql -h /tmp
.
Una soluzione più pulita è quella di correggere il tuo sistema in PATH
modo che quello psql
e libpq
associato a PostgreSQL che stai effettivamente eseguendo sia quello che si trova per primo sul PATH
. I dettagli dipendono dalla versione di Mac OS X e dai pacchetti Pg installati. Non uso il Mac e non posso offrire molti più dettagli da quel lato senza spendere più tempo di quanto sia attualmente disponibile.
PGPORT
è definita: postgresql.org/docs/current/static/libpq-envars.html