Έχω εγκαταστήσει την PostgreSQL 8.4, τον πελάτη Postgres και το Pgadmin 3. Ο έλεγχος ταυτότητας απέτυχε για τον χρήστη "postgres" τόσο για τον πελάτη της κονσόλας όσο και για τον Pgadmin. Έχω πληκτρολογήσει τον χρήστη ως "postgres" και τον κωδικό πρόσβασης "postgres", επειδή λειτουργούσε πριν. Αλλά τώρα ο έλεγχος ταυτότητας απέτυχε. Το έκανα πριν μερικές φορές χωρίς αυτό το πρόβλημα. Τι πρέπει να κάνω; Και τι συμβαίνει;
psql -U postgres -h localhost -W
Password for user postgres:
psql: FATAL: password authentication failed for user "postgres"
FATAL: password authentication failed for user "postgres"
Αν θυμάμαι καλά, ο χρήστης postgres
δεν έχει οριστεί κωδικός πρόσβασης DB στο Ubuntu από προεπιλογή. Αυτό σημαίνει ότι μπορείτε να συνδεθείτε σε αυτόν το λογαριασμό μόνο χρησιμοποιώντας το λογαριασμό OS user του postgres
.
Υποθέτοντας, ότι έχετε πρόσβαση root
στο κουτί μπορείτε να κάνετε:
sudo -u postgres psql
Αν αυτό αποτύχει με το σφάλμα database "postgres" does not exists
, τότε πιθανότατα δεν είστε σε διακομιστή Ubuntu ή Debian :-) Σε αυτή την περίπτωση απλά προσθέστε template1
στην εντολή:
sudo -u postgres psql template1
Αν κάποια από αυτές τις εντολές αποτύχει με το σφάλμα psql: τότε ελέγξτε το αρχείο
/etc/postgresql/8.4/main/pg_hba.conf`: Πρέπει να υπάρχει μια γραμμή όπως αυτή ως η πρώτη γραμμή χωρίς σχόλια:
local all postgres ident
Για τις νεότερες εκδόσεις της PostgreSQL το ident
μπορεί να είναι στην πραγματικότητα peer
. Αυτό είναι επίσης εντάξει.
Μέσα από το κέλυφος psql
μπορείτε να δώσετε στον χρήστη __DB postgres
έναν κωδικό πρόσβασης:
ALTER USER postgres PASSWORD 'newPassword';
Μπορείτε να βγείτε από το κέλυφος psql
πληκτρολογώντας CtrlD ή με την εντολή \q
.
Τώρα θα πρέπει να είστε σε θέση να δώσετε στο pgAdmin έναν έγκυρο κωδικό πρόσβασης για τον υπερ-χρήστη της ΒΔ και θα είναι και αυτό ευχαριστημένο :-)
Η απάντηση του προσωπικού είναι σωστή, αλλά αν θέλετε να αυτοματοποιήσετε περαιτέρω, μπορείτε να το κάνετε:
$ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
Έγινε! Αποθηκεύσατε τον χρήστη = postgres και τον κωδικό πρόσβασης = postgres.
Αν δεν έχετε κωδικό πρόσβασης για τον χρήστη postgres ubuntu κάνετε:
$ sudo passwd postgres
Προσπαθήστε να μην χρησιμοποιήσετε την παράμετρο -W και αφήστε τον κωδικό πρόσβασης κενό. Μερικές φορές ο χρήστης δημιουργείται χωρίς κωδικό πρόσβασης.
Εάν αυτό δεν λειτουργεί, επαναφέρετε τον κωδικό πρόσβασης. Υπάρχουν διάφοροι τρόποι για να το κάνετε, αλλά αυτό λειτουργεί σε πολλά συστήματα:
$ su root
$ su postgres
$ psql -h localhost
> ALTER USER postgres with password 'YourNewPassword';