Πώς να διορθώσετε το σφάλμα «Connection Refused» της PostgreSQL σε localhost θύρα 5432

Αν η PostgreSQL εμφανίζει «connection refused» στο localhost:5432, το πρώτο πράγμα που πρέπει να διορθώσετε είναι η προσβασιμότητα, όχι ο κωδικός πρόσβασης. Εκτελέστε pg_isready -h localhost -p 5432. Αν αναφέρει no response, η PostgreSQL συνήθως είναι σταματημένη, ακούει σε διαφορετική θύρα ή διεύθυνση, εκτελείται σε διαφορετικό περιβάλλον όπως το Docker, ή αποτυγχάνει κατά την εκκίνηση. Αν αναφέρει accepting connections, ο διακομιστής είναι προσβάσιμος και πρέπει να σταματήσετε να αντιμετωπίζετε το πρόβλημα ως θέμα άρνησης θύρας και να διερευνήσετε το επόμενο μήνυμα σφάλματος.

Η PostgreSQL χρησιμοποιεί τη θύρα TCP 5432 από προεπιλογή, και η τρέχουσα τεκμηρίωση της PostgreSQL 18 αναφέρει ότι το listen_addresses έχει προεπιλογή το localhost. Από τις 11 Σεπτεμβρίου 2026, η PostgreSQL 18 είναι η τρέχουσα σταθερή κύρια έκδοση, με την PostgreSQL 18.6 να κυκλοφορεί στις 13 Αυγούστου 2026· η PostgreSQL 19 Beta 3 παραμένει έκδοση ανάπτυξης. Τα παρακάτω βήματα αντιμετώπισης προβλημάτων ισχύουν ευρέως για τις υποστηριζόμενες εκδόσεις της PostgreSQL, αλλά τα ονόματα πακέτων, οι ονόματα υπηρεσιών και οι τοποθεσίες αρχείων διαφέρουν ανάλογα με το λειτουργικό σύστημα και το πρόγραμμα εγκατάστασης. Δείτε την επίσημη ανακοίνωση κυκλοφορίας της PostgreSQL 18.6 και την τρέχουσα τεκμηρίωση ρυθμίσεων σύνδεσης.

Εικονογράφηση τερματικού που δείχνει άρνηση σύνδεσης PostgreSQL σε localhost θύρα 5432
Εικονογράφηση παραγόμενη από AI: Μια άρνηση σημαίνει ότι ο πελάτης δεν μπόρεσε να δημιουργήσει την αναμενόμενη σύνδεση TCP προς την PostgreSQL σε αυτήν την υποδοχή και θύρα. Το τερματικό είναι ενδεικτικό, δεν είναι καταγεγραμμένη συνεδρία.

1. Επιβεβαιώστε ότι το σφάλμα είναι πραγματικά «Connection Refused»

Ξεκινήστε με το ακριβές κείμενο του σφάλματος. Πολλές αποτυχίες σύνδεσης της PostgreSQL ακούγονται παρόμοιες αλλά δείχνουν σε διαφορετικά επίπεδα της στοίβας.

Πρότυπο μηνύματοςΤι συνήθως σας λέειΠού να κοιτάξετε στη συνέχεια
connection refusedΗ σύνδεση TCP δεν έφτασε σε ακροατή PostgreSQL σε αυτήν τη διεύθυνση και θύραΔιαδικασία διακομιστή, θύρα, διεύθυνση δέσμευσης, αντιστοίχιση κοντέινερ, τοπικό δίκτυο
timeout expired ή καμία απάντησηΗ διαδρομή δικτύου δεν παρήγαγε έγκαιρη απάντησηΛάθος υποδοχή, firewall, όριο κοντέινερ/VM, διακομιστής μη διαθέσιμος
password authentication failedΦτάσατε στην PostgreSQL και ξεκίνησε η αυθεντικοποίησηΧρήστης, κωδικός πρόσβασης, μέθοδος αυθεντικοποίησης
no pg_hba.conf entryΦτάσατε στην PostgreSQL, αλλά κανένας κανόνας αυθεντικοποίησης πελάτη που να ταιριάζει δεν επέτρεψε την προσπάθειαpg_hba.conf
database ... does not existΟ διακομιστής είναι προσβάσιμος και η αυθεντικοποίηση προχώρησε αρκετά ώστε να αναγνωρίσει το αίτημα βάσης δεδομένωνΌνομα βάσης δεδομένων και συμβολοσειρά σύνδεσης

Αυτός ο διαχωρισμός αποτρέπει μια κοινή εκτροπή: την επεξεργασία κωδικών πρόσβασης ή του pg_hba.conf ενώ τίποτα δεν ακούει στη θύρα 5432. Αυτές οι ρυθμίσεις έχουν σημασία αφού μια σύνδεση φτάσει στον διακομιστή PostgreSQL.

2. Εκτελέστε το pg_isready έναντι στην ακριβή υποδοχή και θύρα

Το pg_isready είναι το εργαλείο κατάστασης σύνδεσης της ίδιας της PostgreSQL. Εκτελέστε:

pg_isready -h localhost -p 5432

Η PostgreSQL τεκμηριώνει τέσσερις καταστάσεις εξόδου: 0 όταν ο διακομιστής δέχεται συνδέσεις, 1 όταν απορρίπτει συνδέσεις, 2 όταν δεν υπάρχει απάντηση και 3 όταν δεν έγινε έγκυρη προσπάθεια. Δεν χρειάζεστε σωστό όνομα βάσης δεδομένων, όνομα χρήστη ή κωδικό πρόσβασης απλώς για να λάβετε τη βασική κατάσταση του διακομιστή. Δείτε την επίσημη αναφορά του pg_isready.

Εικονογράφηση κατάστασης υπηρεσίας Windows για μια υπηρεσία PostgreSQL
Εικονογράφηση παραγόμενη από AI: Ελέγξτε αν η υπηρεσία ή η διαδικασία διακομιστή PostgreSQL εκτελείται πραγματικά. Το παραγόμενο όνομα υπηρεσίας και ο αριθμός έκδοσης είναι παραδείγματα· χρησιμοποιήστε το όνομα που είναι εγκατεστημένο στη μηχανή σας.

Αν λάβετε:

  • localhost:5432 - accepting connections: η θύρα 5432 είναι προσβάσιμη. Δοκιμάστε την πραγματική σας σύνδεση psql ή εφαρμογής και αντιμετωπίστε το νέο μήνυμα αν αποτύχει.
  • localhost:5432 - rejecting connections: ο διακομιστής απάντησε αλλά δεν δέχεται ακόμη κανονικές συνδέσεις, κάτι που μπορεί να συμβεί κατά την εκκίνηση ή την αποκατάσταση. Ελέγξτε το αρχείο καταγραφής του διακομιστή και περιμένετε αν η εκκίνηση βρίσκεται νόμιμα σε εξέλιξη.
  • localhost:5432 - no response: συνεχίστε με τους παρακάτω ελέγχους διακομιστή και ακροατή.

Δοκιμάστε επίσης ρητά το 127.0.0.1:

pg_isready -h 127.0.0.1 -p 5432

Αν το 127.0.0.1 λειτουργεί αλλά το localhost όχι, το πρόβλημα είναι πιο πιθανό να σχετίζεται με την επίλυση ονόματος ή τη δέσμευση IPv4/IPv6 παρά με την πλήρη διακοπή της PostgreSQL.

3. Βεβαιωθείτε ότι ο διακομιστής PostgreSQL εκτελείται

Αν εγκαταστήσατε την PostgreSQL μέσω πακέτου ή προγράμματος εγκατάστασης του λειτουργικού συστήματος, χρησιμοποιήστε τον κανονικό μηχανισμό διαχείρισης υπηρεσιών του πακέτου. Η ίδια η τεκμηρίωση της PostgreSQL συνιστά τη χρήση της υποδομής εκκίνησης του πακέτου όταν είναι διαθέσιμη, αντί να επινοήσετε μια ξεχωριστή μέθοδο εκκίνησης.

Αν διαχειρίζεστε την ομάδα (cluster) απευθείας και γνωρίζετε τον κατάλογο δεδομένων της, η PostgreSQL παρέχει το pg_ctl:

pg_ctl status -D /path/to/data
pg_ctl start -D /path/to/data -l /path/to/postgresql.log

Η τιμή -D πρέπει να δείχνει στον σωστό κατάλογο δεδομένων της PostgreSQL, ο οποίος είναι ο κατάλογος για αυτήν την ομάδα βάσεων δεδομένων. Αν το PGDATA είναι ρυθμισμένο, το pg_ctl μπορεί να το χρησιμοποιήσει αντί αυτού. Η επίσημη τεκμηρίωση του pg_ctl περιγράφει τις εντολές status, start, restart και reload.

Εικονογράφηση εκκίνησης υπηρεσίας PostgreSQL από γραμμή εντολών
Εικονογράφηση παραγόμενη από AI: Εκκινήστε την πραγματική περίπτωση PostgreSQL που κατέχει τον επιθυμητό κατάλογο δεδομένων σας. Το όνομα υπηρεσίας που εμφανίζεται είναι ενδεικτικό και μπορεί να διαφέρει ανάλογα με το λειτουργικό σύστημα, το πρόγραμμα εγκατάστασης και την έκδοση της PostgreSQL.

Windows

Ανοίξτε τις Υπηρεσίες και αναζητήστε την υπηρεσία PostgreSQL που δημιουργήθηκε από το πρόγραμμα εγκατάστασής σας. Αν είναι σταματημένη, εκκινήστε την. Αν είναι εγκατεστημένες πολλές εκδόσεις της PostgreSQL, βεβαιωθείτε ότι εκκινείτε την περίπτωση που σχετίζεται με τον κατάλογο δεδομένων και τη θύρα που περιμένει η εφαρμογή σας.

Linux

Τα ονόματα πακέτων διαφέρουν μεταξύ των διανομών. Μια εγκατάσταση με πακέτο μπορεί να εκθέτει μια σύστημα υπηρεσία όπως postgresql ή μια μονάδα συγκεκριμένης έκδοσης/ομάδας. Χρησιμοποιήστε τον ορισμό υπηρεσίας του πακέτου αντί να υποθέσετε ένα καθολικό όνομα υπηρεσίας.

macOS

Ο σωστός μηχανισμός εκκίνησης εξαρτάται από το αν η PostgreSQL προέρχεται από πακέτο εφαρμογής, Homebrew, MacPorts, πηγαίο κώδικα ή άλλο πακέτο. Ισχύει η ίδια αρχή: εκκινήστε την περίπτωση από τον μηχανισμό που τη δημιούργησε, στη συνέχεια εκτελέστε ξανά το pg_isready.

Αν ο διακομιστής σταματά αμέσως ξανά, μην συνεχίσετε να τον επανεκκινείτε. Επιθεωρήστε το αρχείο καταγραφής εκκίνησης. Μια λανθασμένη τιμή διαμόρφωσης, ένας μη προσβάσιμος κατάλογος δεδομένων, μια σύγκρουση θύρας, ένα αρχείο που λείπει ή ένα πρόβλημα αποκατάστασης μπορεί να εμποδίσουν την PostgreSQL να παραμείνει σε λειτουργία.

4. Επαληθεύστε ότι κάτι ακούει πραγματικά στη θύρα 5432

Μια εκτελούμενη διαδικασία PostgreSQL δεν αρκεί αν είναι δεσμευμένη σε διαφορετική θύρα ή μόνο σε υποδοχή τομέα Unix. Ελέγξτε τον πίνακα ακροατών του λειτουργικού συστήματος.

Εικονογράφηση τερματικού που δείχνει μια διαδικασία να ακούει στη θύρα TCP 5432
Εικονογράφηση παραγόμενη από AI: Επιβεβαιώστε ότι υπάρχει ακροατής στη διεύθυνση και θύρα που προσπαθεί να προσεγγίσει ο πελάτης σας. Η έξοδος της εντολής διαφέρει ανάλογα με το λειτουργικό σύστημα.

Linux

ss -ltnp | grep 5432

macOS

lsof -nP -iTCP:5432 -sTCP:LISTEN

Windows PowerShell

Get-NetTCPConnection -LocalPort 5432 -State Listen

Αν δεν υπάρχει ακροατής, είτε η PostgreSQL δεν εκτελείται, είτε χρησιμοποιεί άλλη θύρα, είτε είναι δεσμευμένη κάπου αλλού, είτε απέτυχε να εκκινήσει. Αν άλλο πρόγραμμα κατέχει την 5432, η PostgreSQL μπορεί να μην μπορεί να δεσμεύσει αυτήν τη θύρα. Ελέγξτε το αρχείο καταγραφής εκκίνησης της PostgreSQL πριν αποφασίσετε αν θα σταματήσετε την άλλη διαδικασία ή θα μετακινήσετε την PostgreSQL σε άλλη θύρα.

Αν ρυθμίσατε σκόπιμα την PostgreSQL στην 5433, για παράδειγμα, ο πελάτης σας πρέπει να χρησιμοποιεί την 5433:

psql -h localhost -p 5433 -U postgres

Μην «διορθώσετε» μια σκόπιμη μη προεπιλεγμένη θύρα αλλάζοντας την PostgreSQL πίσω στην 5432 εκτός αν αυτό είναι πραγματικά η επιθυμητή σας αρχιτεκτονική.

5. Ελέγξτε το postgresql.conf: listen_addresses και port

Η ρύθμιση listen_addresses της PostgreSQL ελέγχει ποιες διεπαφές TCP/IP δέχονται αιτήματα σύνδεσης. Η τεκμηριωμένη προεπιλογή είναι το localhost. Η ρύθμιση port έχει προεπιλογή την 5432. Και οι δύο ρυθμίσεις εφαρμόζονται κατά την εκκίνηση του διακομιστή, οπότε οι αλλαγές απαιτούν επανεκκίνηση του διακομιστή.

Εικονογράφηση του postgresql.conf που δείχνει listen_addresses localhost και port 5432
Εικονογράφηση παραγόμενη από AI: Για μια βάση δεδομένων μόνο τοπική, το localhost και η θύρα 5432 είναι τυπικές τιμές. Μην διευρύνετε το listen_addresses σε όλες τις διεπαφές εκτός αν η απομακρυσμένη πρόσβαση είναι σκόπιμη και ασφαλισμένη.

Για μια αυστηρά τοπική βάση δεδομένων ανάπτυξης, οι σχετικές ρυθμίσεις συνήθως μοιάζουν ως εξής:

listen_addresses = 'localhost'
port = 5432

Αν το listen_addresses είναι κενή συμβολοσειρά, η PostgreSQL δεν ακούει σε καμία διεπαφή IP και μπορούν να χρησιμοποιηθούν μόνο υποδοχές τομέα Unix όπου υποστηρίζονται. Αντίθετα, ο ορισμός listen_addresses = '*' ζητά από την PostgreSQL να ακούει σε όλες τις διαθέσιμες διεπαφές· αυτό συνήθως δεν είναι απαραίτητο για μια βάση δεδομένων ανάπτυξης μόνο localhost και μπορεί να αυξήσει την έκθεση αν οι κανόνες αυθεντικοποίησης και firewall δεν έχουν σχεδιαστεί για απομακρυσμένη πρόσβαση.

Αν μπορείτε να συνδεθείτε μέσω υποδοχής τομέα Unix αλλά η TCP στο localhost αποτυγχάνει, κάντε ερώτημα στον ζωντανό διακομιστή για να εντοπίσετε τα ενεργά αρχεία και ρυθμίσεις:

SHOW config_file;
SHOW hba_file;
SHOW listen_addresses;
SHOW port;

Αυτό είναι πιο ασφαλές από το να επεξεργαστείτε το πρώτο postgresql.conf που θα βρείτε, ειδικά σε μια μηχανή με πολλές ομάδες ή εκδόσεις PostgreSQL. Η PostgreSQL υποστηρίζει αρχεία διαμόρφωσης εκτός του καταλόγου δεδομένων, οπότε οι διαδρομές αρχείων δεν είναι καθολικές. Δείτε την επίσημη τεκμηρίωση τοποθεσιών αρχείων διαμόρφωσης.

6. Αν η PostgreSQL εκτελείται σε Docker, το «localhost» εξαρτάται από το πού εκτελείται ο πελάτης

Η δικτύωση κοντέινερ αλλάζει το νόημα του ονόματος υποδοχής. Αυτός είναι ένας από τους πιο συνηθισμένους λόγους για τους οποίους μια βάση δεδομένων είναι υγιής ενώ μια εφαρμογή εξακολουθεί να λαμβάνει άρνηση σύνδεσης.

Η εφαρμογή εκτελείται στη μηχανή υποδοχής

Το κοντέινερ PostgreSQL χρειάζεται μια δημοσιευμένη θύρα υποδοχής. Μια υπηρεσία Compose μπορεί να περιέχει:

services:
  db:
    image: postgres:18
    ports:
      - "5432:5432"

Τότε ένας πελάτης που εκτελείται στον υποδοχέα σας μπορεί να χρησιμοποιήσει:

postgresql://postgres:YOUR_PASSWORD@localhost:5432/YOUR_DB

Η εφαρμογή εκτελείται σε άλλο κοντέινερ Compose

Μέσα στο κοντέινερ της εφαρμογής, το localhost αναφέρεται στο ίδιο το κοντέινερ της εφαρμογής, όχι στο κοντέινερ της βάσης δεδομένων. Το Docker Compose παρέχει DNS ονόματος υπηρεσίας, οπότε αν η υπηρεσία βάσης δεδομένων ονομάζεται db, η εφαρμογή συνήθως συνδέεται στο:

postgresql://postgres:YOUR_PASSWORD@db:5432/YOUR_DB

Η επίσημη τεκμηρίωση δικτύωσης Compose του Docker διαχωρίζει ρητά το όνομα υπηρεσίας από κοντέινερ σε κοντέινερ από τη δημοσιευμένη θύρα του υποδοχέα. Για παράδειγμα, αν αντιστοιχίσετε 8001:5432, τα κοντέινερ εξακολουθούν να χρησιμοποιούν db:5432, ενώ ο υποδοχέας χρησιμοποιεί localhost:8001. Δείτε τον επίσημο οδηγό δικτύωσης Compose του Docker.

Πριν επεξεργαστείτε την ίδια την PostgreSQL, ελέγξτε:

docker compose ps
docker compose logs db

Αν το κοντέινερ επανεκκινείται, το αρχείο καταγραφής είναι συνήθως πιο πολύτιμο από το να αλλάζετε συμβολοσειρές σύνδεσης επανειλημμένα.

7. Αντιμετωπίστε τους κανόνες firewall ως μεταγενέστερο έλεγχο για άρνηση localhost

Εικονογράφηση λίστας επιτρεπόμενων εφαρμογών firewall Windows που περιέχει PostgreSQL
Εικονογράφηση παραγόμενη από AI: Οι κανόνες firewall και ασφαλείας τερματικών μπορεί να έχουν σημασία, αλλά για μια σύνδεση localhost στην ίδια μηχανή είναι συνήθως μεταγενέστερος έλεγχος μετά την κατάσταση του διακομιστή, τη δέσμευση θύρας και την αντιστοίχιση κοντέινερ.

Για έναν πελάτη και διακομιστή στην ίδια μηχανή, μην ξεκινήσετε ανοίγοντας τη θύρα 5432 σε κάθε δίκτυο. Πρώτα επιβεβαιώστε ότι η PostgreSQL ακούει τοπικά. Ένας ευρύς κανόνας firewall μπορεί να δημιουργήσει περιττή έκθεση χωρίς να διορθώσει έναν σταματημένο διακομιστή.

Η διερεύνηση firewall γίνεται πιο σχετική όταν:

  • Η PostgreSQL βρίσκεται σε VM, υποδοχέα κοντέινερ, περιβάλλον WSL ή άλλο δίκτυο ονομάτων.
  • Αλλάξατε το listen_addresses για να επιτρέψετε συνδέσεις μη βρόχου (non-loopback).
  • Τοπικό λογισμικό ασφαλείας εφαρμόζει κανόνες σε βρόχο ή διαδικασίες εφαρμογών.
  • Ο ακροατής υπάρχει και λειτουργεί από ένα περιβάλλον αλλά όχι από άλλο.

Αν η απομακρυσμένη πρόσβαση είναι σκόπιμη, περιορίστε τα επιτρεπόμενα δίκτυα προέλευσης και τους κανόνες αυθεντικοποίησης σε όσα απαιτούνται πραγματικά. Το ότι η θύρα 5432 είναι προσβάσιμη από παντού δεν είναι προαπαιτούμενο για μια τοπική εφαρμογή.

8. Μην επεξεργαστείτε το pg_hba.conf μέχρι ο διακομιστής να είναι προσβάσιμος

Το pg_hba.conf ελέγχει την αυθεντικοποίηση πελατών της PostgreSQL. Μια εγγραφή host ισχύει για συνδέσεις TCP/IP. Δεν προκαλεί έναν σταματημένο διακομιστή να αρχίσει να ακούει, οπότε συνήθως είναι η λάθος πρώτη διόρθωση για connection refused.

Μόλις το pg_isready αναφέρει ότι ο διακομιστής δέχεται συνδέσεις, ένα σφάλμα αυθεντικοποίησης μπορεί νόμιμα να σας οδηγήσει στο pg_hba.conf. Για συνδέσεις TCP localhost, οι κανόνες συνήθως περιορίζονται σε διευθύνσεις βρόχου όπως 127.0.0.1/32 και ::1/128, με τη βάση δεδομένων, τον ρόλο και τη μέθοδο αυθεντικοποίησης να επιλέγονται για το περιβάλλον σας.

Η PostgreSQL 18 έχει προεπιλογή το password_encryption στο scram-sha-256, και η τεκμηρίωσή της σημειώνει τους κωδικούς πρόσβασης κρυπτογραφημένους με MD5 ως καταργημένους. Αποφύγετε την τυφλή αντιγραφή παλαιών παραδειγμάτων αυθεντικοποίησης. Δείτε την τρέχουσα τεκμηρίωση του pg_hba.conf και τις τρέχουσες ρυθμίσεις αυθεντικοποίησης.

Σε συστήματα τύπου Unix, οι αλλαγές στο pg_hba.conf μπορούν να φορτωθούν ξανά με pg_ctl reload ή SELECT pg_reload_conf();. Η PostgreSQL τεκμηριώνει μια διαφορά συγκεκριμένη για Windows: οι αλλαγές στο pg_hba.conf εφαρμόζονται σε επόμενες νέες συνδέσεις χωρίς την ίδια απαίτηση SIGHUP.

9. Δοκιμάστε με psql αφού ο ακροατής είναι υγιής

Εικονογράφηση τερματικού που δείχνει επιτυχημένη σύνδεση psql σε PostgreSQL σε localhost θύρα 5432
Εικονογράφηση παραγόμενη από AI: Μια επιτυχής προτροπή psql είναι ένας χρήσιμος έλεγχος από άκρο σε άκρο ότι ο διακομιστής είναι προσβάσιμος και ότι οι παρεχόμενες παράμετροι σύνδεσης πέρασαν την αυθεντικοποίηση. Η εμφανιζόμενη έκδοση είναι ενδεικτική.

Μόλις το pg_isready πει ότι ο διακομιστής δέχεται συνδέσεις, δοκιμάστε την ίδια διαδρομή που περιμένει η εφαρμογή σας:

psql -h localhost -p 5432 -U postgres -d postgres

Μια επιτυχής προτροπή psql σας λέει πολύ περισσότερα από το «η υπηρεσία εκτελείται»: επιβεβαιώνει ότι ένας πραγματικός πελάτης PostgreSQL έφτασε στον διακομιστή και πέρασε τα στάδια σύνδεσης και αυθεντικοποίησης για αυτές τις παραμέτρους.

Αν το psql λειτουργεί αλλά η εφαρμογή σας εξακολουθεί να αναφέρει άρνηση σύνδεσης, συγκρίνετε τη διαμόρφωση της εφαρμογής χαρακτήρα προς χαρακτήρα:

  • Όνομα υποδοχής
  • Θύρα
  • Όνομα βάσης δεδομένων
  • Όνομα χρήστη
  • Αν η εφαρμογή εκτελείται στον υποδοχέα, σε Docker, σε VM ή σε άλλο περιβάλλον
  • Μεταβλητές περιβάλλοντος που φορτώνονται από την πραγματική εκτελούμενη διαδικασία
  • Αν η εφαρμογή επανεκκινήθηκε μετά την αλλαγή της συμβολοσειράς σύνδεσής της

Ένα κοινό παράδειγμα είναι ένας τοπικός τερματικός που χρησιμοποιεί localhost:5432 με επιτυχία ενώ μια εφαρμογή ιστού σε Docker χρησιμοποιεί επίσης localhost:5432. Η εφαρμογή ιστού τότε καλεί τον εαυτό της, όχι την υπηρεσία βάσης δεδομένων. Σε αυτήν την περίπτωση, η αλλαγή της υποδοχής βάσης δεδομένων του κοντέινερ στο όνομα υπηρεσίας Compose είναι η σχετική διόρθωση.

10. Διαβάστε το αρχείο καταγραφής του διακομιστή αν η PostgreSQL δεν παραμένει σε λειτουργία

Αν η υπηρεσία εκκινεί και εξέρχεται αμέσως, το σφάλμα δικτύου είναι μόνο ένα σύμπτωμα. Το αρχείο καταγραφής εκκίνησης είναι όπου η PostgreSQL εξηγεί γιατί δεν μπόρεσε να γίνει έτοιμη.

Αναζητήστε μηνύματα σχετικά με:

  • Διεύθυνση ή θύρα ήδη σε χρήση
  • Μη έγκυρη σύνταξη postgresql.conf
  • Κατάλογος δεδομένων που λείπει ή είναι μη προσβάσιμος
  • Προβλήματα ιδιοκτησίας ή δικαιωμάτων αρχείων
  • Προβλήματα αποκατάστασης ή WAL
  • Μη συμβατός κατάλογος δεδομένων και κύρια έκδοση διακομιστή

Αν εκκινήσετε μια άμεσα διαχειριζόμενη ομάδα με pg_ctl, η PostgreSQL συνιστά την καταγραφή της εξόδου του διακομιστή, για παράδειγμα με -l logfile. Η τεκμηρίωση εκκίνησης διακομιστή του έργου εξηγεί γιατί η έξοδος εκκίνησης είναι χρήσιμη για τη διάγνωση.

Εικονογράφηση λίστας ελέγχου αντιμετώπισης προβλημάτων για αποτυχίες σύνδεσης PostgreSQL localhost
Εικονογράφηση παραγόμενη από AI: Όταν η προφανής διόρθωση δεν λειτουργεί, συγκρίνετε την πραγματική υποδοχή, θύρα, εκτελούμενη περίπτωση, αντιστοίχιση Docker, αρχεία καταγραφής και συμβολοσειρά σύνδεσης αντί να αλλάξετε άσχετες ρυθμίσεις.

Γρήγορη διάγνωση ανά σενάριο

ΚατάστασηΠιο χρήσιμος πρώτος έλεγχοςΠιθανή κατεύθυνση
Νέα τοπική εγκατάσταση· η 5432 αρνείταιpg_isready -h localhost -p 5432Η υπηρεσία μπορεί να μην έχει εκκινήσει ή να χρησιμοποιεί άλλη θύρα
Λειτουργούσε χθες· η μηχανή επανεκκινήθηκεΚατάσταση υπηρεσίας και αρχείο καταγραφής PostgreSQLΗ υπηρεσία δεν εκκίνησε αυτόματα ή η εκκίνηση αποτυγχάνει τώρα
Το psql στον υποδοχέα λειτουργεί· η εφαρμογή Docker αποτυγχάνειΕπιθεωρήστε την υποδοχή σύνδεσης της εφαρμογήςΧρησιμοποιήστε το όνομα υπηρεσίας Compose αντί του localhost μέσα στο κοντέινερ
Η υποδοχή Unix λειτουργεί· το -h localhost αποτυγχάνειSHOW listen_addresses; και SHOW port;Ο ακροατής TCP είναι απενεργοποιημένος ή δεσμευμένος διαφορετικά
Η 5432 έχει ακροατή, αλλά δεν είναι PostgreSQLΕντοπίστε τη διαδικασία που κατέχει τη θύραΕπιλύστε τη σύγκρουση θύρας ή χρησιμοποιήστε τη ρυθμισμένη θύρα της PostgreSQL
Το σφάλμα άλλαξε σε αποτυχία κωδικού πρόσβασηςΣταματήστε να αλλάζετε ρυθμίσεις δικτύουΗ προσβασιμότητα διορθώθηκε· αντιμετωπίστε την αυθεντικοποίηση
Το σφάλμα άλλαξε σε no pg_hba.conf entryΕλέγξτε τους κανόνες HBA που ταιριάζουνΗ προσβασιμότητα διορθώθηκε· αντιμετωπίστε την εξουσιοδότηση πελάτη

Κοινές διορθώσεις που μπορούν να χειροτερέψουν την κατάσταση

Ορισμός listen_addresses σε '*' χωρίς λόγο

Αυτό μπορεί να κάνει την PostgreSQL προσβάσιμη από επιπλέον διεπαφές, αλλά δεν είναι απαραίτητο για μια κανονική σύνδεση localhost στην ίδια μηχανή. Μπορεί επίσης να διευρύνει την έκθεση. Χρησιμοποιήστε την πιο στενή δέσμευση που ταιριάζει με την αρχιτεκτονική σας.

Άνοιγμα της θύρας 5432 σε ολόκληρο το δίκτυο

Μια εξαίρεση firewall δεν μπορεί να κάνει μια σταματημένη διαδικασία PostgreSQL να ακούσει. Επιβεβαιώστε πρώτα τον ακροατή, στη συνέχεια προσθέστε μόνο την πρόσβαση δικτύου που χρειάζεστε πραγματικά.

Επαναφορά του κωδικού πρόσβασης postgres για άρνηση σύνδεσης

Η αυθεντικοποίηση κωδικού πρόσβασης συμβαίνει αφού ο πελάτης φτάσει στην PostgreSQL. Αν η σύνδεση TCP αρνείται, η αλλαγή του κωδικού πρόσβασης συνήθως απευθύνεται στο λάθος επίπεδο.

Επεξεργασία του λάθος postgresql.conf

Οι μηχανές με πολλαπλές εγκαταστάσεις μπορεί να περιέχουν πολλά αρχεία διαμόρφωσης. Όποτε είναι δυνατόν, χρησιμοποιήστε μια λειτουργική τοπική σύνδεση υποδοχής και SHOW config_file;, ή εντοπίστε τον κατάλογο δεδομένων της διαδικασίας διακομιστή που πραγματικά σκοπεύετε να εκτελέσετε.

Υποθέτοντας ότι η 5432 είναι υποχρεωτική

Η 5432 είναι η προεπιλογή, όχι απαίτηση. Αν η επιθυμητή σας ομάδα είναι ρυθμισμένη για την 5433 και κάθε πελάτης χρησιμοποιεί την 5433, αυτό είναι έγκυρο. Η συνέπεια έχει μεγαλύτερη σημασία από το να επιβάλλετε την προεπιλογή.

Πότε πρέπει να αλλάξετε την προσέγγιση αντιμετώπισης προβλημάτων σας

Πρέπει να σταματήσετε να εργάζεστε συγκεκριμένα για την «άρνηση σύνδεσης» μόλις το pg_isready αναφέρει αποδοχή συνδέσεων ή το psql φτάσει σε σφάλμα αυθεντικοποίησης/βάσης δεδομένων. Σε αυτό το σημείο, ο ακροατής δικτύου κάνει τη δουλειά του, και η συνέχιση αλλαγής θυρών, κανόνων firewall ή listen_addresses μπορεί να εισάγει νέα προβλήματα.

Ομοίως, αν η PostgreSQL δεν μπορεί να εκκινήσει, μεταβείτε από την αντιμετώπιση προβλημάτων πλευράς πελάτη στη διάγνωση εκκίνησης διακομιστή. Αν ένα κοντέινερ επανεκκινείται συνεχώς, μεταβείτε στο αρχείο καταγραφής του κοντέινερ. Αν ένας πελάτης υποδοχέα λειτουργεί αλλά ένας πελάτης κοντέινερ αποτυγχάνει, μεταβείτε στο DNS και την αντιστοίχιση θύρας του κοντέινερ. Η χρήσιμη ερώτηση δεν είναι «Ποια ρύθμιση PostgreSQL πρέπει να εναλλάξω;» αλλά «Σε ποιο επίπεδο σταματά η πρόοδος της σύνδεσης;»

Πώς μοιάζει μια επιτυχημένη διόρθωση

Μπορείτε να θεωρήσετε το πρόβλημα προσβασιμότητας localhost διορθωμένο όταν όλα τα παρακάτω ισχύουν για το περιβάλλον που χρησιμοποιείτε πραγματικά:

  1. Το pg_isready -h localhost -p 5432 αναφέρει accepting connections, ή αναφέρει την ισοδύναμη υποδοχή/θύρα που ρυθμίσατε σκόπιμα.
  2. Το λειτουργικό σύστημα δείχνει την PostgreSQL να ακούει στην αναμενόμενη διεύθυνση και θύρα.
  3. Το psql μπορεί να φτάσει στον διακομιστή χρησιμοποιώντας την ίδια διαδρομή δικτύου με την εφαρμογή.
  4. Η εφαρμογή σας δεν λαμβάνει πλέον connection refused.
  5. Αν εμφανίζεται ένα διαφορετικό σφάλμα PostgreSQL, αντιμετωπίζετε αυτό το νέο σφάλμα ξεχωριστά αντί να συνεχίζετε να τροποποιείτε τον ακροατή.

Το όριο αυτής της διαδικασίας είναι σημαντικό: διαγιγνώσκει αν ένας διακομιστής PostgreSQL μπορεί να προσεγγιστεί στην αναμενόμενη υποδοχή και θύρα. Δεν μπορεί από μόνο του να διορθώσει έναν μη έγκυρο κωδικό πρόσβασης, έναν ρόλο που λείπει, μια βάση δεδομένων που λείπει, ένα σφάλμα SQL, ένα πρόβλημα σχήματος ή ένα σφάλμα pool σύνδεσης εφαρμογής. Αυτά γίνονται σχετικά μόνο αφού η σύνδεση περάσει το στάδιο άρνησης.

Για τις περισσότερες περιπτώσεις localhost, η συντομότερη διαδρομή παραμένει η ίδια: δοκιμάστε την 5432 με pg_isready, επιβεβαιώστε ότι η επιθυμητή περίπτωση PostgreSQL εκτελείται, επαληθεύστε τον ακροατή και μόνο τότε αλλάξτε τη διαμόρφωση. Αυτή η σειρά κρατά την αντιμετώπιση προβλημάτων εστιασμένη και μειώνει την πιθανότητα να μετατρέψετε ένα απλό πρόβλημα σταματημένης υπηρεσίας σε μεγαλύτερο πρόβλημα δικτύου ή ασφαλείας.

Αφήστε ένα σχόλιο

Πώς να διορθώσετε το σφάλμα "Τα στυλ CSS Tailwind δεν ενημερώνονται" σε μια εφαρμογή Vite React

Πώς να διορθώσετε το σφάλμα "Τα στυλ CSS Tailwind δεν ενημερώνονται" σε μια εφαρμογή Vite React

Διορθώστε τα στυλ CSS του Tailwind που δεν ενημερώνονται στο Vite React ελέγχοντας τη ρύθμιση του Tailwind v4, τις εισαγωγές CSS, την ανίχνευση πηγαίου κώδικα, τις δυναμικές κλάσεις, το HMR και τις παλιές προσωρινές μνήμες.

Πώς να διορθώσετε το σφάλμα ModuleNotFoundError: Δεν υπάρχει ενότητα με το όνομα 'pip' στην Python 3

Πώς να διορθώσετε το σφάλμα ModuleNotFoundError: Δεν υπάρχει ενότητα με το όνομα 'pip' στην Python 3

Διορθώστε το σφάλμα ModuleNotFoundError της Python 3 για το pip σε Windows, macOS και Linux με το ensurepip, πακέτα λειτουργικού συστήματος, εικονικά περιβάλλοντα και ελέγχους διερμηνέα.

Πώς να διορθώσετε το σφάλμα "Άρνηση άδειας (δημόσιο κλειδί)" στο GitHub SSH

Πώς να διορθώσετε το σφάλμα "Άρνηση άδειας (δημόσιο κλειδί)" στο GitHub SSH

Διορθώστε το πρόβλημα "Απόρριψη άδειας SSH GitHub (publickey)" ελέγχοντας τον κεντρικό υπολογιστή, το ενεργό κλειδί SSH, τον λογαριασμό GitHub, την εξουσιοδότηση SSO, την απομακρυσμένη διεύθυνση URL και την πρόσβαση στη θύρα 22.

Πώς να διορθώσετε το σφάλμα "Git Push Rejected: Non-Fast-Forward" χωρίς να χάσετε αλλαγές

Πώς να διορθώσετε το σφάλμα "Git Push Rejected: Non-Fast-Forward" χωρίς να χάσετε αλλαγές

Διορθώστε με ασφάλεια μια μη γρήγορη προώθηση σε Git. Προστατέψτε την τοπική εργασία, ανακτήστε απομακρυσμένες υποβολές, επιλέξτε συγχώνευση ή αλλαγή βάσης, επιλύστε διενέξεις και προωθήστε χωρίς να χάσετε αλλαγές.

Πώς να διορθώσετε το σφάλμα "Nginx 502 Bad Gateway" κατά τη μεσολάβηση στο Node.js

Πώς να διορθώσετε το σφάλμα "Nginx 502 Bad Gateway" κατά τη μεσολάβηση στο Node.js

Διορθώστε τα σφάλματα Nginx 502 Bad Gateway με ένα Node.js upstream ελέγχοντας τη θύρα εφαρμογής, τα αρχεία καταγραφής NGINX, τη διεύθυνση proxy_pass, τη δικτύωση κοντέινερ, τα χρονικά όρια και την επαναφόρτωση.

How to Fix “Type 'null' Is Not Assignable to Type” in TypeScript

How to Fix “Type 'null' Is Not Assignable to Type” in TypeScript

Fix TypeScript's “Type 'null' is not assignable to type” error with union types, narrowing, defaults, and safe assertions under strictNullChecks.

Πώς να διορθώσετε το σφάλμα «Το Prisma Client δεν έχει δημιουργηθεί ακόμη»

Πώς να διορθώσετε το σφάλμα «Το Prisma Client δεν έχει δημιουργηθεί ακόμη»

Διορθώστε το σφάλμα μη δημιουργημένου Prisma Client ελέγχοντας τον generator, το schema, τη διαδρομή εξόδου, τα imports, τις εκδόσεις, τη ρύθμιση monorepo και τα βήματα build της ανάπτυξης.

Πώς να διορθώσετε το σφάλμα "ERR_MODULE_NOT_FOUND" στις εισαγωγές ESM του Node.js

Πώς να διορθώσετε το σφάλμα "ERR_MODULE_NOT_FOUND" στις εισαγωγές ESM του Node.js

Διορθώστε το σφάλμα Node.js ERR_MODULE_NOT_FOUND στο ESM ελέγχοντας τις διαδρομές εισαγωγής, τις επεκτάσεις αρχείων, την εγκατάσταση πακέτων, τις εξαγωγές, τη λειτουργία ESM και τις καθαρές εγκαταστάσεις.

Πώς να διορθώσετε το πρόβλημα πιστοποιητικού SSL: Unable to Get Local Issuer Certificate στο Git

Πώς να διορθώσετε το πρόβλημα πιστοποιητικού SSL: Unable to Get Local Issuer Certificate στο Git

Διορθώστε το σφάλμα του Git «unable to get local issuer certificate» εντοπίζοντας το backend εμπιστοσύνης, εγκαθιστώντας τη σωστή αλυσίδα CA και διατηρώντας ενεργή την επαλήθευση SSL.

Πώς να διορθώσετε το σφάλμα λήξης χρόνου δικτύου του MongoDB στη σύνδεση Mongoose

Πώς να διορθώσετε το σφάλμα λήξης χρόνου δικτύου του MongoDB στη σύνδεση Mongoose

Διορθώστε τα σφάλματα λήξης χρόνου δικτύου του MongoDB στο Mongoose εντοπίζοντας τον τύπο λήξης, ελέγχοντας την προσβασιμότητα Atlas ή TCP, διορθώνοντας το URI και ρυθμίζοντας τα timeouts μόνο όταν δικαιολογείται.