Pertanyaan Tidak dapat terhubung ke postgresql pada port 5432


Saya menginstal Bitnami Django stack yang termasuk PostgreSQL 8.4.

Ketika saya menjalankan psql -U postgres Saya mendapatkan kesalahan berikut:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

PG pasti berjalan dan pg_hba.conf file terlihat seperti ini:

# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Apa yang memberi?

"Proof" yang dijalankan oleh pg:

root@assaf-desktop:/home/assaf# ps axf | grep postgres
14338 ?        S      0:00 /opt/djangostack-1.3-0/postgresql/bin/postgres -D /opt/djangostack-1.3-0/postgresql/data -p 5432
14347 ?        Ss     0:00  \_ postgres: writer process                                                                        
14348 ?        Ss     0:00  \_ postgres: wal writer process                                                                    
14349 ?        Ss     0:00  \_ postgres: autovacuum launcher process                                                           
14350 ?        Ss     0:00  \_ postgres: stats collector process                                                               
15139 pts/1    S+     0:00              \_ grep --color=auto postgres
root@assaf-desktop:/home/assaf# netstat -nltp | grep 5432
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      14338/postgres  
tcp6       0      0 ::1:5432                :::*                    LISTEN      14338/postgres  
root@assaf-desktop:/home/assaf# 

62
2018-06-26 12:21


asal


Saya tidak tahu apa yang Anda tanyakan dan Anda tidak pernah memberikan masukan. Ini adalah 100 orang yang mendapatkan kesalahan umum dan melaporkan hal yang berbeda. Ini benar-benar tidak sesuai untuk situs. - Evan Carroll


Jawaban:


Masalah ini berasal dari menginstal postgres paket tanpa nomor versi. Meskipun postgres akan dipasang dan itu akan menjadi versi yang benar, skrip untuk menyiapkan kluster tidak akan berjalan dengan benar; ini masalah kemasan.

Jika Anda merasa nyaman dengan postgres ada skrip yang bisa Anda jalankan untuk membuat klaster ini dan dapatkan postgres berlari. Namun, ada cara yang lebih mudah.

Pertama bersihkan instalan postingan lama. Masalah saat ini terletak pada 9,1 jadi saya akan berasumsi itulah yang telah Anda instal

sudo apt-get remove --purge postgresql-9.1

Sekarang cukup instal ulang

sudo apt-get install postgresql-9.1

Perhatikan nama paket dengan nomor versi. HTH.


70
2017-08-19 23:54



ini membantu saya dengan postgres 9.3. - sevenseacat
Ini harus menjadi jawaban yang diterima, bekerja dengan postgres 9.4 / ubuntu 14.10, juga - Malte
Jawaban ini membantu saya dengan postgres 9.4 dan 9.3 mixup. Keren. - ingo
Bekerja untuk ubuntu 16.04 dan postgres 9.5, tetapi harus membersihkan setiap paket terkait postgres pertama. - Evert
Ini benar-benar jawaban yang luar biasa! Dan juga pengalaman pengguna yang mengerikan di sisi postgres - user1952500


Pesan kesalahan mengacu pada soket Unix-domain, jadi Anda perlu menyesuaikannya netstat doa untuk tidak mengecualikan mereka. Jadi cobalah tanpa opsi -t:

netstat -nlp | grep 5432

Saya akan menebak bahwa server sebenarnya mendengarkan pada soket /tmp/.s.PGSQL.5432 bukan /var/run/postgresql/.s.PGSQL.5432 bahwa klien Anda sedang berusaha untuk terhubung. Ini adalah masalah umum ketika menggunakan paket PostgreSQL yang di-compile atau pihak ketiga pada Debian atau Ubuntu, karena default sumber untuk direktori soket Unix-domain adalah /tmp tetapi kemasan Debian mengubahnya /var/run/postgresql.

Kemungkinan solusi:

  • Gunakan klien yang disediakan oleh paket pihak ketiga Anda (panggilan /opt/djangostack-1.3-0/postgresql/bin/psql). Kemungkinan uninstall paket yang disediakan Ubuntu sama sekali (mungkin sulit karena dependensi balik lainnya).
  • Perbaiki direktori soket dari paket pihak ketiga agar kompatibel dengan Debian / Ubuntu.
  • Menggunakan -H localhost untuk terhubung melalui TCP / IP.
  • Menggunakan -h /tmp atau setara PGHOST pengaturan untuk menunjuk ke direktori yang benar.
  • Jangan gunakan paket pihak ketiga.

19
2018-06-27 17:41





Kamu dapat memakai psql -U postgres -h localhost untuk memaksa koneksi terjadi melalui TCP bukan soket domain UNIX; anda netstat output menunjukkan bahwa server PostgreSQL sedang mendengarkan di localhost port 5432.

Anda dapat mengetahui soket UNIX lokal mana yang digunakan oleh server PostgrSQL dengan menggunakan invocavtion yang berbeda dari netstat:

netstat -lp --protocol=unix | grep postgres

Bagaimanapun, antarmuka di mana server PostgreSQL mendengarkan dikonfigurasi dalam postgresql.conf.


16
2018-06-26 12:51



Ini pasti berhasil. Terima kasih banyak! - FacePalm


Buat saja softlink seperti ini:

ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432

15
2017-07-09 01:35



Ini bekerja untuk saya dan sepertinya merupakan solusi termudah tanpa harus mengubah konfigurasi postgresql Anda. Pastikan Anda superuser saat mencoba membuat tautan. - brendan
ln: gagal membuat tautan simbolik '/var/run/postgresql/.s.PGSQL.5432': File ada - P_M
Saya telah membuat folder "postgresql" di direktori / var / run /. Itu tidak ada. - Ikrom


Ini bekerja untuk saya:

Edit: postgresql.conf

sudo nano /etc/postgresql/9.3/main/postgresql.conf

Aktifkan atau tambahkan:

listen_addresses = '*'

Mulai ulang mesin basis data:

sudo service postgresql restart

Juga, Anda dapat memeriksa file pg_hba.conf

sudo nano /etc/postgresql/9.3/main/pg_hba.conf

Dan tambahkan jaringan atau alamat host Anda:

host    all             all             192.168.1.0/24          md5

13
2017-10-09 13:17



listen_address = '*' membuat trik. itu hanya mendengarkan di "localhost" dan bukan pada 127.0.0.1. Terima kasih! - mwm
my god ... akhirnya sesuatu yang berhasil - tidak ada yang berhasil sampai saya menambahkan alamat dan mendengarkan listaddett. - AntonB
Tambah satu! Itu berhasil bagi saya. - Atul Makwana
ini berfungsi pada windows ubuntu bash. - ahmadalibaloch


Saya harus mengkompilasi PostgreSQL 8.1 pada Debian Squeeze karena saya menggunakan Project Open, yang didasarkan pada OpenACS dan tidak akan berjalan pada versi PostgreSQL yang lebih baru.

Konfigurasi kompilasi default menempatkan unix_socket di /tmp, tetapi Project Open, yang bergantung pada PostgreSQL, tidak akan berfungsi karena mencari unix_socketdi /var/run/postgresql.

Ada pengaturan postgresql.conf untuk mengatur lokasi soket. Masalah saya adalah bahwa saya bisa mengaturnya /tmp dan psql bekerja, tetapi tidak proyek terbuka, atau saya bisa mengaturnya /var/run/postgresql dan psql tidak akan berfungsi tetapi proyek terbuka.

Satu resolusi untuk masalah ini adalah untuk mengatur soket untuk /var/run/postgresql lalu jalankan psql, berdasarkan saran Petrus, seperti:

psql -h /var/run/postgresql

Ini berjalan secara lokal menggunakan izin lokal. Satu-satunya kelemahan adalah bahwa itu lebih mengetik daripada hanya "psql".

Saran lain yang dibuat seseorang adalah membuat tautan simbolis antara dua lokasi. Ini juga berhasil, tetapi, tautan menghilang saat reboot. Mungkin lebih mudah untuk hanya menggunakan argumen -h, namun, saya membuat tautan simbolik dari dalam skrip PostgreSQL di /etc/init.d. Saya menempatkan tautan simbolik membuat perintah di bagian "mulai". Tentu saja, ketika saya mengeluarkan perintah berhenti dan mulai atau mulai ulang, ia akan mencoba membuat ulang tautan simbolis yang ada, tetapi selain pesan peringatan, mungkin tidak ada salahnya.

Dalam kasus saya, bukan:

ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432

saya sudah

ln -s /var/run/postgresql/.s.PGSQL.5432 /tmp/.s.PGSQL.5432

dan telah secara eksplisit mengatur unix_socket ke /var/run/postgresql/.s.PGSQL.5432 di postgresql.conf.


5
2017-11-06 03:22





Saya membuatnya bekerja dengan melakukan ini:

dpkg-reconfigure locales

Pilih lokal pilihan Anda lalu jalankan

pg_createcluster 9.5 main --start

(9.5 adalah versi postgresql saya)

/etc/init.d/postgresql start

dan kemudian berhasil!

sudo su - postgres
psql

5
2017-09-13 09:05



Hah, maaf, saya pikir perintahnya sudah jelas. bagi saya, saya bertemu masalah ini ketika saya menginstal ulang postgresql, saya mencoba untuk me-restart dengan tipe service postgresql restart   tetapi ia mengatakan saya tidak memiliki gugus postgresql apa pun. Kemudian saya menemukan cara ini untuk membantu saya keluar :) - mymusise
Setelah tiga jam Googling, Anda akhirnya memperbaiki masalah saya. dpkg-reconfigure locales sangat penting. - Don Mums


Larutan:

Melakukan hal ini

export LC_ALL="en_US.UTF-8"

dan ini. (9.3 adalah versi PostgreSQL saya saat ini. Tuliskan versi Anda!)

sudo pg_createcluster 9.3 main --start

3
2018-02-23 21:47



woooow, itu adalah satu-satunya pemecahan masalah saya, terima kasih. - user3687723