Επιδιόρθωση: psql: δεν ήταν δυνατή η σύνδεση στον διακομιστή: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος
Η PostgreSQL προωθείται ως η πιο προηγμένη πλατφόρμα εφαρμογών βάσης δεδομένων ανοιχτού κώδικα και το Debian Linux έχει σίγουρα πολλά πακέτα που το καθιστούν ακόμη πιο περίπλοκο. Μπορείτε επίσης να βρείτε πολλά πακέτα για PostgreSQL εάν εργάζεστε με τον Ubuntu Server ή οποιαδήποτε από τις διάφορες περιστροφές του Ubuntu, καθώς βασίζονται στον πυρήνα του Debian. Αυτό το επίπεδο πολυπλοκότητας και ανάπτυξης καθιστά προειδοποιήσεις «δεν μπορούσε να συνδεθεί με διακομιστή» και «κανένα τέτοιο αρχείο ή κατάλογο» που είναι πολύ πιο ενοχλητικό.
Ευτυχώς, αυτές είναι συνήθως απλές περιπτώσεις προβλημάτων αδειών που προκαλούνται από το γεγονός ότι η PostgreSQL θέλει ένας χρήστης που ονομάζεται postgres να διατηρεί αυτούς τους καταλόγους. Χρησιμοποιώντας ένα απλό τέχνασμα γραμμής εντολών, μπορείτε να το διορθώσετε σχεδόν αμέσως. Ωστόσο, θα θέλατε να περάσετε από μερικούς βασικούς διαγνωστικούς ελέγχους για να βεβαιωθείτε ότι αυτό είναι το πρόβλημα που αντιμετωπίζετε.
Δεν ήταν δυνατή η σύνδεση PostgreSQL σε σφάλματα διακομιστή
Αρχικά, δοκιμάστε να επανεκκινήσετε το σύστημα PostgreSQL με μη αυτόματο τρόπο. Μερικές φορές αυτό αρκεί για να διορθώσετε τα πράγματα και αν όχι τότε θα λάβετε τουλάχιστον ένα μήνυμα σφάλματος για να εργαστείτε. Πιθανότατα, απλώς επανεκκινήστε το σύστημα εκδίδοντας την εντολή psql ως χρήστης postgres.
Ίσως να διαπιστώσετε ότι όλα αυτά ξεκαθάρισαν. Διαφορετικά, ενδέχεται να λάβετε μια γραμμή με την ένδειξη "psql: δεν ήταν δυνατή η σύνδεση με διακομιστή: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος", που σημαίνει ότι αντιμετωπίζετε προβλήματα άδειας. Εάν λάβετε αυτό το μήνυμα σφάλματος, θα λάβετε και κάποιο άλλο κείμενο.
Ελέγξτε την κατάσταση της υπηρεσίας εάν λάβατε αυτό το μήνυμα για να βεβαιωθείτε ότι έχουν φορτωθεί οι λειτουργικές μονάδες. Πρέπει να είναι, αλλά αν δεν είναι, ίσως θέλετε να κάνετε επανεκκίνηση. Εάν λάβετε ένα μήνυμα με την ένδειξη "Loaded: φόρτωση (/lib/systemd/system/postgresql.service; enabled)", τότε εκτελούνται. Δοκιμάστε επανεκκίνηση της υπηρεσίας sudo postgresql για να κάνετε μια σύντομη επανεκκίνηση και να δείτε αν αυτό διορθώνει οτιδήποτε Συνήθως δεν το κάνει, αλλά μπορεί να αξίζει μια δοκιμή ανάλογα.
Υποθέτοντας ότι δεν βοήθησε, ρίξτε μια ματιά στο εσωτερικό του αρχείου καταγραφής PostgreSQL για να αναζητήσετε σφάλματα. Στην απίθανη περίπτωση να βρείτε κάτι σχετικά με σφάλματα πακέτου, τότε ενδέχεται να σας λείπει μία από τις λειτουργικές μονάδες SQL. Αυτό δεν είναι συνήθως η αιτία αυτών των προβλημάτων, αλλά σίγουρα δεν μπορεί να βλάψει τουλάχιστον να ρίξουμε μια ματιά. Πιθανότατα, θα συναντήσετε κάτι που σας προειδοποιεί ότι "Τα δικαιώματα πρέπει να είναι u = rwx (0700)" και
ότι ο "κατάλογος δεδομένων" /var/lib/postgresql/9.6/main "έχει πρόσβαση ομάδας ή κόσμου", αν και μπορεί να δείτε έναν διαφορετικό αριθμό έκδοσης ανάλογα με τον διακομιστή SQL που χρησιμοποιείτε.
Αυτό συμβαίνει επειδή το Debian και παρόμοιες διανομές αναμένουν ότι ο χρήστης και η ομάδα postgres ελέγχουν αυτούς τους καταλόγους με δικαιώματα 0700 και όλα τα αρχεία έως 0600 δικαιώματα για λόγους ασφαλείας. Το μόνο που έχετε να κάνετε είναι να εκτελέσετε την ακόλουθη εντολή στο τερματικό για να διορθώσετε τα δικαιώματα:
sudo chown -R postgres: postgres /var/lib/postgresql/9.6/ && sudo chmod -R u = rwX, go = /var/lib/postgresql/9.6/
Λάβετε υπόψη ότι θα πρέπει να είναι κεφαλαίο X και όχι το πιο συνηθισμένο πεζά x που πιθανότατα γνωρίζετε περισσότερο λόγω του συγκεκριμένου τρόπου με τον οποίο θέλετε να ορίσετε αυτές τις επιλογές άδειας αρχείου. Ενώ χρειάζεστε πρόσβαση root για να το κάνετε αυτό, η συμπερίληψη αυτών των δύο σημάτων sudo θα πρέπει να είναι περισσότερο από αρκετή για να έχετε στον εαυτό σας τα κατάλληλα δικαιώματα όταν εκτελείτε ως κανονικός χρήστης. Αυτό είναι σημαντικό δεδομένου ότι το Ubuntu και οι διάφορες εφαρμογές Linux αποσυνδέονται από το Ubuntu κατακερματιστούν τον κύριο λογαριασμό root, οπότε πρέπει να κάνετε τα πράγματα με αυτόν τον τρόπο.
Μόλις ολοκληρωθεί αυτή η εντολή, μπορείτε να κάνετε επανεκκίνηση της υπηρεσίας ξανά έως επανεκκίνηση της υπηρεσίας sudo postgresql από το τερματικό και δεν θα πρέπει να έχετε σφάλματα αυτήν τη φορά. Εάν επρόκειτο να ρίξετε μια ματιά στο αρχείο καταγραφής, τότε αυτές οι προειδοποιήσεις σχετικά με τα προβλήματα δικαιωμάτων δεν πρέπει να υπάρχουν πλέον.
Αυτό είναι ένα σφάλμα που συμβαίνει ως αποτέλεσμα αρκετά συγκεκριμένων συνθηκών, οπότε δεν θα πρέπει να το αντιμετωπίσετε ξανά αφού το διορθώσετε την πρώτη φορά, υπό την προϋπόθεση ότι δεν προσπαθείτε να κάνετε χειροκίνητα κάτι που περιλαμβάνει χειραγώγηση δικαιωμάτων των καταλόγων PostgreSQL. Δεν υπάρχει καμιά περίπτωση όπου αυτό θα έπρεπε να είναι πραγματικά απαραίτητο, εκτός από τη διόρθωση αυτού του προβλήματος.