5432 numaralı bağlantı noktasında postgresql ile bağlantı kurulamıyor

62

PostgreSQL 8.4'ü içeren Bitnami Django yığınını yükledim.

psql -U postgres çalıştırdığımda aşağıdaki hatayı alıyorum:

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 kesinlikle çalışıyor ve pg_hba.conf dosyası şu şekilde görünüyor:

# 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

Ne verir?

pg'nin çalıştığı "Kanıt":

[email protected]:/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
[email protected]:/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  
[email protected]:/home/assaf# 
    
sordu Assaf Lavie 26.06.2011 14:21

18 cevap

70

Bu sorun, bir sürüm numarası olmadan postgres paketinin kurulmasından kaynaklanmaktadır. % Co_de% yüklenecek ve doğru sürüm olacak olsa da, küme için kullanılacak komut dosyası düzgün çalışmayacaktır; Bu bir ambalaj sorunu.

postgres ile rahatsanız, bu küme oluşturmak ve postgres çalışanını çalıştırmak için çalıştırabileceğiniz bir komut dosyası vardır. Ancak daha kolay bir yol var.

Önce eski postgres yüklemesini temizleyin. Sorun şu anda 9.1 ile yatıyor. Bu yüzden yüklediğinizi varsayıyorum

sudo apt-get remove --purge postgresql-9.1

Şimdi basitçe yeniden yükleyin

sudo apt-get install postgresql-9.1

Paketin adını sürüm numarası ile not edin. HTH.

    
verilen cevap Stewart 20.08.2013 01:54
19

Hata iletisi bir Unix alan adı soketine başvurur; bu nedenle, netstat çağrıcınızı bunları hariç tutmamak için ayarlamalısınız. Bu yüzden -t seçeneği olmadan deneyin:

netstat -nlp | grep 5432

Sunucunun aslında istemcinizin bağlanmaya çalıştığı /tmp/.s.PGSQL.5432 yerine /var/run/postgresql/.s.PGSQL.5432 soketini dinlediğini tahmin ediyorum. Bu, el ile derlenmiş veya üçüncü taraf PostgreSQL paketlerini Debian veya Ubuntu'da kullanırken tipik bir sorundur, çünkü Unix-alan soket dizininin kaynak varsayılanı /tmp , Debian paketi ise /var/run/postgresql olarak değiştirir.

Olası geçici çözümler:

  • Üçüncü taraf paketiniz tarafından sağlanan istemcileri kullanın ( /opt/djangostack-1.3-0/postgresql/bin/psql 'ı arayın). Ubuntu tarafından sağlanan paketleri tamamen kaldırın (diğer ters bağımlılıklar nedeniyle zor olabilir).
  • Debian / Ubuntu ile uyumlu olması için üçüncü taraf paketinin soket dizinini onarın.
  • TCP / IP ile bağlanmak için -H localhost kullanın.
  • Doğru dizini işaret etmek için -h /tmp veya eşdeğer PGHOST ayarını kullanın.
  • Üçüncü taraf paketleri kullanmayın.
verilen cevap Peter Eisentraut 27.06.2011 19:41
16

Bağlantıyı UNIX etki alanı soketleri yerine TCP üzerinden gerçekleşmesi için psql -U postgres -h localhost kullanabilirsiniz. netstat çıktınız PostgreSQL sunucusunun localhost'un 5432 numaralı bağlantı noktasını dinlediğini gösteriyor.

PostgrSQL sunucusu tarafından hangi yerel UNIX soketinin farklı bir netstat davetiyesini kullanarak kullanıldığını öğrenebilirsiniz:

netstat -lp --protocol=unix | grep postgres

Herhangi bir hızda, PostgreSQL sunucusunun dinlediği arayüzler postgresql.conf 'de yapılandırılmıştır.

    
verilen cevap Riccardo Murri 26.06.2011 14:51
15

Bunun gibi bir softlink oluşturun:

ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
    
verilen cevap Uriel 09.07.2012 03:35
13

Bu benim için çalışıyor:

Düzenleme: postgresql.conf

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

Etkinleştir veya ekle:

listen_addresses = '*'

Veritabanı motorunu yeniden başlatın:

sudo service postgresql restart

Ayrıca, pg_hba.conf

dosyasını da kontrol edebilirsiniz.
sudo nano /etc/postgresql/9.3/main/pg_hba.conf

Ayrıca ağınızı veya ana bilgisayar adresini ekleyin:

host    all             all             192.168.1.0/24          md5
    
verilen cevap angelous 09.10.2014 15:17
5

OpenACS'e dayanan ve PostgreSQL'in daha yeni sürümlerinde çalışmayacak olan Project Open'ı kullandığım için PostgreSQL 8.1'i Debian Squeeze üzerinde derlemeliydim.

Varsayılan derleme yapılandırması unix_socket 'sında /tmp koyar, ancak PostgreSQL'e dayanan Project Open, unix_socket ' si /var/run/postgresql dizininde göründüğü için işe yaramaz.

Soketin yerini belirlemek için postgresql.conf 'da bir ayar var. Sorunum, /tmp ve psql için çalışabildiğim, ancak projenin açık olmaması veya /var/run/postgresql ve psql 'nin çalışmayacağını ancak projenin açık olduğunu ayarlayabilmemdi.

Konunun bir çözümü,% co_de için soketi% olarak ayarlamak ve ardından% 60'ını% 60'ını Peter's öneriye dayalı olarak çalıştırmaktır:

psql -h /var/run/postgresql

Bu yerel olarak yerel izinler kullanıyor. Tek dezavantajı, sadece "psql" den daha fazla yazılmasıdır.

Birisinin yaptığı diğer öneri, iki konum arasında sembolik bir bağ oluşturmaktı. Bu da çalıştı, ancak bağlantı yeniden başlatıldığında ortadan kayboldu. -H argümanını kullanmak daha kolay olabilir, ancak ben sembolik linki PostgreSQL komut dosyasından /var/run/postgresql dizininden yarattım. "Start" bölümüne sembolik link oluşturma komutunu yerleştirdim. Tabii ki, bir durdurma ve başlatma veya yeniden başlatma komutunu verdiğimde, varolan bir sembolik bağlantıyı yeniden oluşturmaya çalışacağız, ancak uyarı iletisinden başka, büyük olasılıkla bunun içinde hiçbir zarar yoktur.

Benim durumumda yerine:

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

Bende var

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

ve unix_socket değerini psql dizininde /etc/init.d olarak ayarladınız.

    
verilen cevap Joe 06.11.2012 04:22
5

Bunu yaparak çalışıyorum:

dpkg-reconfigure locales

Tercih ettiğiniz bölgeleri seçin ve ardından

çalıştırın
pg_createcluster 9.5 main --start

(9.5 sürümü benim postgresql'im)

/etc/init.d/postgresql start

ve sonra çalışıyor!

sudo su - postgres
psql
    
verilen cevap mymusise 13.09.2016 11:05
3

Çözüm:

Bunu yap

export LC_ALL="en_US.UTF-8"

ve bu. ( 9.3 , şu anki PostgreSQL sürümüm. Sürümünüzü yazınız!)

sudo pg_createcluster 9.3 main --start
    
verilen cevap bogdanvlviv 23.02.2016 22:47
2

Benim durumumda, /etc/postgresql/9.5/main/pg_hba.conf 'yi düzenlerken yazdığım bir yazım hatası neden oldu

Değiştirdim:

# Database administrative login by Unix domain socket
local   all             postgres                                peer

için:

# Database administrative login by Unix domain socket
local   all             postgres                                MD5

Ancak MD5 'si md5 :

şeklinde olmalıydı:

# Database administrative login by Unix domain socket
local   all             postgres                                md5
    
verilen cevap Mehdi Nellen 29.11.2016 11:15
2

Bu sorunu postgres-9.5 sunucumla çözemedim. Bu ve diğer sitelerdeki düzeltmenin her bir permütasyonunu deneyen 3 günlük sıfır ilerlemeden sonra sunucuyu yeniden kurmaya ve 5 günlük iş değerini kaybetmeye karar verdim. Ancak, yeni örnekte bu sorunu çoğalttım. Bu benim yaptığım yıkıcı yaklaşımı almadan önce onu nasıl düzelteceğimize dair bir bakış açısı sağlayabilir.

Önce, postgresql.conf dosyasındaki tüm günlük ayarlarını devre dışı bırakın. Bu bölüm:

# ERROR REPORTING AND LOGGING

Bu bölümdeki her şeyi yorumlayın. Ardından servisi yeniden başlatın.

Yeniden başlatırken, /etc/init.d/postgresql start veya restart kullanın Yeniden başlatırken süper kullanıcı modunda olmanın faydasını buldum. Sadece bu operasyon için x-window açtım. % Co_de% ile bu süper kullanıcı modunu kurabilirsiniz.

Sunucunun bu basit komutla ulaşılabildiğini doğrulayın: sudo -i

Eğer bu düzeltmezse, şunları düşünün:

Bir çözüm bulmaya çalışırken bir çok klasörde mülkiyeti değiştiriyordum. Muhtemelen bu klasör sahipliğini ve psql -l -U postgres s değerini 2 gün daha geri almaya çalışacağımı biliyordum. Bu klasör sahipliğiyle uğraştınız ve sunucunuzu tamamen boşaltmak istemiyorsanız, tüm etkilenen klasörlerin ayarlarını orijinal durumuna geri döndürmek için izlemeyi başlatın. Başka bir sistemde paralel yükleme yapmayı ve tüm klasörlerin sahipliğini ve ayarlarını sistematik olarak kontrol etmeyi denemek isteyebilirsiniz. Tedrici, ancak verilerinize erişebilirsin.

Erişim elde ettikten sonra, chmod dosyasının # ERROR REPORTING AND LOGGING bölümünde ilgili satırları sistematik olarak değiştirin. Yeniden başlat ve test et. Günlükler için varsayılan klasörün bir hataya neden olduğunu buldum. Özellikle postgresql.conf yorumunu yaptım. Sistem, günlükleri indirdiği varsayılan klasör log_directory olur.

    
verilen cevap jurban1997 19.01.2017 02:34
2

Postgres hizmetiniz herhangi bir hata olmadan çalışıyorsa veya Postgres hizmetini başlatırken bir hata yoksa ve yine de bu hatayı alıyorsanız, şu adımları izleyin

Adım 1:% co_de sürümünü çalıştırma, cihazınızda çalışan tüm postgre'leri listeleyecektir.

ör:

Ver Cluster Port Status Owner    Data directory               Log file
9.6 main    5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log

büyük olasılıkla durumunuzda ve postalama hizmetinizde durum düşecektir

Adım 2: pg_ctlcluster

'i yeniden başlatın
#format is pg_ctlcluster <version> <cluster> <action>
sudo pg_ctlcluster 9.6 main start

#restart postgres
sudo service postgres restart

3. Adım: 2. Adım başarısız oldu ve hata attı

Bu işlem başarılı olmazsa bir hata verir. Hata günlüğünü pg_lsclusters

'de görebilirsiniz.

Hatam:

FATAL: could not access private key file "/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied
Try adding 'postgres' user to the group 'ssl-cert'

4. Adım: postgres sahipliğini kontrol edin

/var/log/postgresql/postgresql-9.6-main.log 'sinin postgres ' nin sahibi olduğundan emin olun

Değilse, çalıştırın

sudo chown postgres -R /var/lib/postgresql/9.6/main/

5. Adım: Gönderenlerin denetlenmesi kullanıcısı ssl-cert kullanıcı grubuna ait

PostGres kullanıcısını yanlışlıkla /var/lib/postgresql/version_no/main grubundan kaldırdığımı ortaya çıkardı. Kullanıcı grubu sorununu düzeltmek ve izinleri düzeltmek için aşağıdaki kodu çalıştırın

#set user to group back with
sudo gpasswd -a postgres ssl-cert

# Fix ownership and mode
sudo chown root:ssl-cert  /etc/ssl/private/ssl-cert-snakeoil.key
sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key

# now postgresql starts! (and install command doesn't fail anymore)
sudo service postgres restart
    
verilen cevap Noushad PP 16.04.2018 16:44
0

Peter Eisentraut'un tarif ettiği aynı problemi yaşadım. % Co_de% komutunu kullanarak sunucunun netstat -nlp | grep 5432 soketini dinlediğini görebiliyordum.

Bunu düzeltmek için, /tmp/.s.PGSQL.5432 dosyanızı düzenleyin ve aşağıdaki satırları değiştirin:

listen_addresses = '*'
unix_socket_directories = '/var/run/postgresql'

Şimdi postgresql.conf dosyasını çalıştırın (Sürümünüzle 9-4'ü değiştirin) ve uzaktan bağlantılar şimdi çalışıyor olmalıdır.

Artık yerel bağlantılara izin vermek için, service postgresql-9.4 restart dizinine sembolik bir bağlantı oluşturun.

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

/var/run/postgresql öğenizin doğru şekilde yapılandırıldığından emin olun.

    
verilen cevap Justin Lessard 20.11.2015 17:44
0

Benim durumumda, yapmam gereken tek şey şuydu:

sudo service postgresql restart

ve sonra

sudo -u postgres psql

Bu iyi çalıştı. Umarım yardımcı olur. Şerefe :).

    
verilen cevap Pranay Dugar 29.06.2017 19:21
0

Postgres kaldırma ikna edici sesler bulundu. Bu, sorunumu çözmeye yardımcı olur:

  1. Postgre sunucusunu başlat:

    sudo systemctl start postgresql
    
  2. Sunucunun açılışta başladığından emin olun:

    sudo systemctl enable postgresql
    

Ayrıntılı bilgi DigitalOcean sitesinde bulunabilir Burada.

    
verilen cevap parlad neupane 01.02.2018 16:45
0

Muhtemelen olabilirdi çünkü /var/lib/postgresql/9.3/main klasörünün izinlerini değiştirdiniz.

Aşağıdaki komutu kullanarak bunu 700 olarak değiştirmeyi deneyin:

sudo chmod 700 main
    
verilen cevap Farzin 06.11.2014 14:01
0

Dosyanızı bulun:

sudo find /tmp/ -name .s.PGSQL.5432

Sonuç:

/tmp/.s.PGSQL.5432

Postacı kullanıcısı olarak giriş yap:

su postgres
psql -h /tmp/ yourdatabase
    
verilen cevap Waldeyr Mendes da Silva 30.01.2017 16:18
0

Aynı problemi yaşadım (Ubuntu 15.10'da (wily)). sudo find / -name 'pg_hba.conf' -print veya sudo find / -name 'postgresql.conf' -print boş. Bundan önce, postgresql'in birden çok örneği kurulmuş gibi görünüyordu.

Yüklü veya bağımlılık sorunları listelendiğinde gördüğünüzde benzer olabilir

.../postgresql
.../postgresql-9.x 

vb.

Bu durumda, her paketin 1% 'sini% 1 içermelidir.

Ardından bu mektubu takip ederek iyi olacaksınız. Özellikle anahtar ithal ve FIRST kaynak listesine eklendiğinde

sudo apt-get update && sudo apt-get -y install python-software-properties && wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

Akıllıca kullanmıyorsanız, sudo apt-get autoremove sürümünüzü, yani wily

çıkışıyla değiştirin.
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ wily-pgdg main" >> /etc/apt/sources.list.d/postgresql.list'
sudo apt-get update && sudo apt-get install postgresql-9.3 pgadmin3

Ve sonra iyi olmalısınız ve bağlantı kurabilir ve kullanıcı oluşturabilirsiniz.

Beklenen çıktı:

Creating new cluster 9.3/main ...
config /etc/postgresql/9.3/main
data   /var/lib/postgresql/9.3/main
locale en_US.UTF-8
socket /var/run/postgresql
port   5432

Çözümlerimin kaynağı (krediler)

    
verilen cevap Grmn 05.02.2016 17:43
0

Aynı sorunu yaşarken farklı bir şey denedim:

postgresql daemon uygulamasını manuel olarak başlatıyorum:

FATAL:  could not create shared memory segment ...
   To reduce the request size (currently 57237504 bytes), reduce PostgreSQL's
   shared memory usage, perhaps by reducing shared_buffers or max_connections.

Yani yaptığım şey, shared_buffers ve max_connections için postgresql.conf ve restart hizmetine bir alt sınır koymaktı.

Bu sorunu çözdü!

İşte tam hata günlüğü:

$ sudo service postgresql start
 * Starting PostgreSQL 9.1 database server                                                                                                                                                               * The PostgreSQL server failed to start. Please check the log output:
2013-06-26 15:05:11 CEST FATAL:  could not create shared memory segment: Invalid argument
2013-06-26 15:05:11 CEST DETAIL:  Failed system call was shmget(key=5432001, size=57237504, 03600).
2013-06-26 15:05:11 CEST HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently 57237504 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.
    If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.
    The PostgreSQL documentation contains more information about shared memory configuration.
    
verilen cevap DrFalk3n 26.06.2013 15:29

Etiketlerdeki diğer soruları oku