Saya telah menginstal postgresql di OSX. Ketika saya menjalankan psql, saya mengerti
$ psql
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5433"?
Namun, dari / etc / services
postgresql 5432/udp # PostgreSQL Database
postgresql 5432/tcp # PostgreSQL Database
# Tom Lane <tgl@sss.pgh.pa.us>
pyrrho 5433/tcp # Pyrrho DBMS
pyrrho 5433/udp # Pyrrho DBMS
5433 ditempati oleh pyrrho, 5432 ditugaskan untuk hal. Saya dapat terhubung dengan
psql -p 5432
tetapi mengapa psql berpikir itu 5433 dan bagaimana cara membuat psql terlihat di tempat yang tepat secara default?
postgresql
port
psql
highBandWidth
sumber
sumber
PGPORT
didefinisikan: postgresql.org/docs/current/static/libpq-envars.htmlJawaban:
/etc/services
hanya saran, ini adalah daftar port yang terkenal. Itu tidak berarti bahwa apa pun benar-benar berjalan pada port itu atau bahwa layanan yang disebutkan akan berjalan pada port itu.Dalam kasus PostgreSQL biasanya menggunakan port 5432 jika tersedia. Jika tidak, sebagian besar penginstal akan memilih port gratis berikutnya, biasanya 5433.
Anda dapat melihat apa yang sebenarnya berjalan menggunakan
netstat
alat (tersedia di OS X, Windows, dan Linux, dengan sintaks baris perintah bervariasi di ketiga).Ini lebih rumit pada sistem Mac OS X oleh kekacauan mengerikan dari paket PostgreSQL yang berbeda - versi kuno PostgreSQL Apple yang terintegrasi dengan OS, Postgres.app, Homebrew, Macports, pemasang EnterpriseDB, dll.
Apa yang akhirnya terjadi adalah bahwa pengguna menginstal Pg dan memulai server dari satu kemasan, tetapi menggunakan
psql
danlibpq
klien dari kemasan yang berbeda. Biasanya ini terjadi ketika mereka menjalankan Postgres.app atau Pg homebrew dan menghubungkan denganpsql
yang dikirimkan dengan OS. Tidak hanya ini kadang-kadang memiliki port default yang berbeda, tetapi Pg yang dikirimkan dengan Mac OS X memiliki jalur soket unix default yang berbeda , sehingga bahkan jika server berjalan pada port yang sama, itu tidak akan mendengarkan soket unix yang sama.Sebagian besar pengguna Mac mengatasi ini dengan hanya menggunakan tcp / ip with
psql -h localhost
. Anda juga dapat menentukan porta jika diperlukan, mispsql -h localhost -p 5433
. Anda mungkin memiliki beberapa instance PostgreSQL berjalan jadi pastikan Anda terhubung ke yang benar dengan menggunakanselect version()
danSHOW data_directory;
.Anda juga dapat menentukan direktori soket unix; periksa
unix_socket_directories
pengaturan instance PostgreSQL yang ingin Anda sambungkan dan tentukan denganpsql -h
, misalnyapsql -h /tmp
.Solusi yang lebih bersih adalah memperbaiki sistem Anda
PATH
sehinggapsql
danlibpq
terkait dengan PostgreSQL yang Anda jalankan sebenarnya adalah yang pertama ditemukan di InternetPATH
. Rinciannya tergantung pada versi Mac OS X Anda dan paket Pg mana yang telah Anda instal. Saya tidak menggunakan Mac dan tidak bisa menawarkan lebih banyak detail di sisi itu tanpa menghabiskan lebih banyak waktu daripada yang tersedia saat ini.sumber
Jawaban cepat di OSX, atur variabel lingkungan Anda.
Atau apa pun yang Anda butuhkan.
sumber
Port default Postgres biasanya dikonfigurasi di:
Di Ubuntu ini mungkin:
Cari
port
di file ini.sumber
~/PostgreSQL/data/pg96
Berkat @a_horse_with_no_name 's komentar , saya mengubah definisi PGPORT saya untuk 5432 di pg_env.sh. Itu memperbaiki masalah bagi saya. Saya tidak tahu mengapa postgres menetapkannya sebagai 5433 pada awalnya ketika hosting layanan di 5432.
sumber
Tampaknya salah satu alasan paling umum hal ini terjadi adalah jika Anda menginstal versi baru PostgreSQL tanpa menghentikan layanan instalasi yang ada. Ini juga sakit kepala saya. Sebelum menginstal atau memutakhirkan, khususnya pada OS X dan menggunakan installer satu klik dari Enterprise DB, pastikan Anda memeriksa status instalasi lama sebelum melanjutkan.
sumber
Saya mengalami masalah ini juga, ternyata saya memiliki dua server postgres yang berjalan pada saat yang sama. Saya menghapus salah satu dari mereka dan mengubah port kembali ke 5432 dan berfungsi dengan baik sekarang.
sumber
Bagi saya di PgAdmin 4 di Mac OS High Sierra , Mengklik database PostrgreSQL10 di bawah Server di kolom kiri, lalu tab Properties , menunjukkan 5433 sebagai port di bawah Connection . (Saya tidak tahu mengapa, karena saya memilih 5432 saat menginstal). Bagaimanapun, saya mengklik ikon Edit di bawah tab Properties , ubah ke 5432 , disimpan, dan itu menyelesaikan masalah. Sosok pergi.
sumber