Ich habe das Passwort an den Standardbenutzer von Postgres entweder vergessen oder (während der Installation) falsch geschrieben. Ich kann es scheinbar nicht ausführen und erhalte folgende Fehlermeldung:
psql: FATAL: password authentication failed for user "hisham"
hisham-agil: hisham$ psql
Gibt es sowieso das Passwort zurückzusetzen oder wie erstelle ich einen neuen Benutzer mit Superuser-Berechtigungen?
Ich bin neu bei Postgres und habe es erstmalig installiert. Ich versuche, es mit Rails zu verwenden, und ich verwende Mac OS X Lion.
finde die Datei pg_hba.conf
- sie kann sich zum Beispiel in /etc/postgresql-9.1/pg_hba.conf
befinden.
cd /etc/postgresql-9.1/
Sichern Sie sie
cp pg_hba.conf pg_hba.conf-backup
platzieren Sie die folgende Zeile (entweder als erste oder als einzige Zeile):
local all all trust
starten Sie Ihren PostgreSQL-Server neu (z. B. unter Linux :)
Sudo /etc/init.d/postgresql restart
Wenn der Dienst (Daemon) nicht in der Protokolldatei mit der Berichterstellung beginnt:
lokale Verbindungen werden von diesem Build nicht unterstützt
du solltest dich ändern
local all all trust
zu
Host all all 127.0.0.1/32 trust
sie können jetzt wie jeder Benutzer eine Verbindung herstellen. Stellen Sie eine Verbindung mit dem Superuser postgres
her (Hinweis, der Name des Superbenutzers kann in Ihrer Installation anders sein. In einigen Systemen heißt er beispielsweise pgsql
.)
psql -U postgres
oder
psql -h 127.0.0.1 -U postgres
(Beachten Sie, dass Sie mit dem ersten Befehl nicht immer mit dem lokalen Host verbunden sind.)
Passwort zurücksetzen
ALTER USER my_user_name with password 'my_secure_password';
Stellen Sie den alten pg_hba.conf
wieder her, da es very gefährlich ist, um in der Nähe zu bleiben
cp pg_hba.conf-backup pg_hba.conf
starten Sie den Server neu, um mit dem sicheren pg_hba.conf
laufen zu können.
Sudo /etc/init.d/postgresql restart
Weiterführende Literatur über diese pg_hba-Datei: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html
Vergessen Sie nicht, -h localhost
als Befehlszeilenparameter hinzuzufügen, wenn Sie von der Befehlszeile aus eine Verbindung zu Postgres herstellen. Wenn dies nicht der Fall ist, versucht postgres, eine Verbindung mit dem PEER-Authentifizierungsmodus herzustellen.
Das Folgende zeigt ein Zurücksetzen des Kennworts, eine fehlgeschlagene Anmeldung mit PEER-Authentifizierung und eine erfolgreiche Anmeldung mit einer TCP - Verbindung.
# Sudo -u postgres psql
could not change directory to "/root"
psql (9.1.11)
Type "help" for help.
postgres=# \password
Enter new password:
Enter it again:
postgres=# \q
Versagen:
# psql -U postgres -W
Password for user postgres:
psql: FATAL: Peer authentication failed for user "postgres"
Mit -h localhost
arbeiten:
# psql -U postgres -W -h localhost
Password for user postgres:
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.
postgres=#
Die pg_hba.conf
(C:\Program Files\PostgreSQL\9.3\data
) -Datei hat sich seit dem Antworten geändert. In Windows funktionierte das Öffnen der Datei und Ändern der METHOD
von md5
in trust
:
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
Host all all 127.0.0.1/32 trust
# IPv6 local connections:
Host all all ::1/128 trust
Dann habe ich mich mit pgAdmin III ohne Passwort angemeldet und das postgres'
-Passwort des Benutzers geändert, indem ich zu File -> Change Password
ging.
Nur ein Hinweis unter Linux Sie können einfach Sudo su - postgres
ausführen, um Postgres-Benutzer zu werden, und von dort aus ändern, was mit psql erforderlich ist.
Ich hatte gerade dieses Problem unter Windows 10 und das Problem in meinem Fall war, dass ich nur psql
ausgeführt habe und standardmäßig versucht habe, mich mit meinem Windows-Benutzernamen ("Nathan") anzumelden, aber es gab kein PostgreSQL Benutzer mit diesem Namen, und es hat mir nicht gesagt, dass.
Die Lösung bestand also darin, psql -U postgres
und nicht nur psql
auszuführen, und dann funktionierte das bei der Installation eingegebene Passwort.
Wenn Sie in Windows sind, können Sie einfach laufen
Net User postgres postgres
und loggen Sie sich in postgres mit postgres/postgres als Benutzer/Passwort ein
Bei der Windows-Installation wird ein Windows-Benutzer erstellt. Und "psql" verwendet diesen Benutzer für die Verbindung zum Port. Wenn Sie das Kennwort des PostgreSQL-Benutzers ändern, wird das Windows-Kennwort nicht geändert. Die unten aufgeführten Befehlszeileneinstellungen funktionieren nur, wenn Sie auf die Befehlszeile zugreifen können.
Stattdessen können Sie die Windows-GUI-Anwendung "c:\Windows\system32\lusrmgr.exe" verwenden. Diese App verwaltet Benutzer, die von Windows erstellt wurden. Sie können das Passwort jetzt ändern.
Bearbeiten Sie die Datei /etc/postgresql/<version>/main/pg_hba.conf
und suchen Sie die folgende Zeile:
local all postgres md5
Bearbeiten Sie die Zeile und ändern Sie md5
am Ende in trust
und speichern Sie die Datei
Laden Sie den Dienst " postgresql " erneut
$ Sudo service postgresql reload
Dadurch werden die Konfigurationsdateien geladen. Jetzt können Sie den Benutzer postgres
ändern, indem Sie sich in der psql
-Shell anmelden
$ psql -U postgres
Aktualisieren Sie das Passwort des postgres
-Benutzers
alter user postgres with password 'secure-passwd-here';
Bearbeiten Sie die Datei /etc/postgresql/<version>/main/pg_hba.conf
und ändern Sie trust
zurück in md5
und speichern Sie die Datei
Laden Sie den Dienst " postgresql " erneut
$ Sudo service postgresql reload
Stellen Sie sicher, dass die Kennwortänderung funktioniert
$ psql -U postgres -W
Was ich tat, um das gleiche Problem zu lösen, war:
Öffnen Sie die Datei pg_hba.conf mit dem gedit-Editor vom Terminal aus:
Sudo gedit /etc/postgresql/9.5/main/pg_hba.conf
Es wird nach dem Passwort gefragt. Geben Sie Ihr Admin-Anmeldekennwort ein . Dadurch wird gedit mit der Datei geöffnet. Fügen Sie die folgende Zeile ein:
Host all all 127.0.0.1/32 trust
knapp unter -
# Database administrative login by Unix domain socket
Speichern und schließen Sie es. Schließen Sie das Terminal und öffnen Sie es erneut, und führen Sie den folgenden Befehl aus:
psql -U postgres
Sie gelangen jetzt in die psql-Konsole . Ändern Sie nun das Passwort, indem Sie Folgendes eingeben:
ALTER USER [your prefered user name] with password '[desired password]';
Wenn der Benutzer nicht existiert, verwenden Sie statt ALTER
CREATE
.
Entfernen Sie schließlich die bestimmte Zeile, die Sie in pg_hba eingefügt haben, und speichern Sie sie.
Die Datei .pgpass im Basisverzeichnis eines Benutzers oder die von PGPASSFILE referenzierte Datei kann Kennwörter enthalten, die verwendet werden sollen, wenn für die Verbindung ein Kennwort erforderlich ist (und ansonsten kein Kennwort angegeben wurde). Unter Microsoft Windows hat die Datei den Namen% APPDATA%\postgresql\pgpass.conf (wobei% APPDATA% auf das Anwendungsdaten-Unterverzeichnis im Benutzerprofil verweist).
Diese Datei sollte Zeilen des folgenden Formats enthalten:
hostname: Port: Datenbank: Benutzername: Passwort
(Sie können der Datei einen Erinnerungskommentar hinzufügen, indem Sie die darüber liegende Zeile kopieren und mit # voranstellen.) Jedes der ersten vier Felder kann ein Literalwert oder * sein, der mit irgendetwas übereinstimmt. Das Kennwortfeld aus der ersten Zeile, das den aktuellen Verbindungsparametern entspricht, wird verwendet. (Geben Sie daher spezifischere Einträge an, wenn Sie Platzhalter verwenden.) Wenn ein Eintrag Folgendes enthalten muss: oder \, entgehen Sie dieses Zeichen mit. Ein Hostname von localhost stimmt mit den Verbindungen TCP (Hostname localhost) und Unix-Domänensockel (pghost empty oder das Standard-Socket-Verzeichnis) überein, die vom lokalen Computer kommen. Auf einem Standby-Server entspricht der Datenbankname der Replikation den zum Master-Server hergestellten Streaming-Replikationsverbindungen. Das Datenbankfeld ist von begrenztem Nutzen, da Benutzer für alle Datenbanken in demselben Cluster dasselbe Kennwort verwenden.
Auf Unix-Systemen müssen die Berechtigungen für .pgpass den Zugriff auf die Welt oder eine Gruppe nicht zulassen. erreichen Sie dies mit dem Befehl chmod 0600 ~/.pgpass. Wenn die Berechtigungen weniger streng sind, wird die Datei ignoriert. Unter Microsoft Windows wird davon ausgegangen, dass die Datei in einem sicheren Verzeichnis gespeichert ist. Daher wird keine spezielle Berechtigungsprüfung durchgeführt.
Hinzufügen der Antwort für Windows User für die neueste Postgres-Version (> 10),
Gehen Sie zu Ihrem Postgres-Installationsverzeichnis und suchen Sie nach pg_hba.conf
, Sie finden es in ..\postgres\data\pg_hba.conf
.
Öffnen Sie diese Datei mit dem Notizblock, suchen Sie diese Zeile,
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
Host all all 127.0.0.1/32 md5
# IPv6 local connections:
Host all all ::1/128 md5
#..
Ändern Sie die Methode von md5 in trust.
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
Host all all 127.0.0.1/32 trust
# IPv6 local connections:
Host all all ::1/128 trust
# ...
Gehen Sie jetzt zu Ihrer SQL-Shell (PSQL) und lassen Sie alles leer.
Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]:
Es wird dieses Mal nicht nach einem Passwort gefragt, und Sie werden angemeldet sein.
Nun führe diese Zeile aus, ALTER USER yourusername WITH SUPERUSER
Nun können Sie die Shell mit\q verlassen
Wechseln Sie erneut in die Datei pg_hba.conf und ändern Sie METHOD erneut von trust in md5 und speichern Sie es.
Melden Sie sich jetzt mit Ihrem neuen Benutzer und Kennwort an, und Sie können\du auf seine Attribute überprüfen.