Ich habe das Passwort für den Standardbenutzer von Postgres entweder vergessen oder (während der Installation) falsch eingegeben. Ich kann es anscheinend nicht ausführen und erhalte die folgende Fehlermeldung:
psql: FATAL: password authentication failed for user "hisham"
hisham-agil: hisham$ psql
Gibt es überhaupt eine Möglichkeit, das Passwort zurückzusetzen oder wie erstelle ich einen neuen Benutzer mit Superuser-Berechtigungen?
Ich bin neu bei Postgres und habe es gerade zum ersten Mal installiert. Ich versuche es mit Rails zu verwenden und verwende Mac OS X Lion.
Antworten:
Suchen Sie die Datei
pg_hba.conf
- sie befindet sich beispielsweise in/etc/postgresql-9.1/pg_hba.conf
.cd /etc/postgresql-9.1/
Sichern Sie sie
cp pg_hba.conf pg_hba.conf-backup
Platzieren Sie die folgende Zeile (entweder als erste unkommentierte Zeile oder als einzige):
Starten Sie Ihren PostgreSQL-Server neu (z. B. unter Linux :)
sudo /etc/init.d/postgresql restart
Wenn der Dienst (Daemon) nicht mit der Berichterstellung in der Protokolldatei beginnt:
du solltest dich ändern
local all all trust
zu
host all all 127.0.0.1/32 trust
Sie können sich jetzt als beliebiger Benutzer verbinden. Stellen Sie eine Verbindung als Superuser her
postgres
(Hinweis: Der Name des Superusers kann in Ihrer Installation unterschiedlich sein. In einigen Systemen wird er beispielsweise aufgerufenpgsql
. )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 ('Mein_Benutzername durch Postgres ersetzen, da Sie den Postgres- Benutzer zurücksetzen )
ALTER USER my_user_name with password 'my_secure_password';
Stellen Sie das alte wieder her,
pg_hba.conf
da es sehr gefährlich ist, in der Nähe zu bleibencp pg_hba.conf-backup pg_hba.conf
Starten Sie den Server neu, um mit dem Safe ausgeführt zu werden
pg_hba.conf
sudo /etc/init.d/postgresql restart
Weitere Informationen zu dieser pg_hba-Datei: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html
quelle
psql
? Ich werde immer noch zurVergessen Sie nicht, hinzuzufügen, wenn Sie über die Befehlszeile eine Verbindung zu Postgres herstellen
-h localhost
als Befehlszeilenparameter . Wenn nicht, versucht postgres, eine Verbindung im PEER-Authentifizierungsmodus herzustellen.Das Folgende zeigt ein Zurücksetzen des Kennworts, eine fehlgeschlagene Anmeldung mit PEER-Authentifizierung und eine erfolgreiche Anmeldung über eine TCP-Verbindung.
Versagen:
Arbeiten mit
-h localhost
:quelle
Die Datei
pg_hba.conf
(C:\Program Files\PostgreSQL\9.3\data
) hat sich geändert, seit diese Antworten gegeben wurden. Was für mich gearbeitet, in Windows ist die Datei zu öffnen und die ÄnderungMETHOD
vonmd5
zutrust
:Dann habe ich mich mit pgAdmin III ohne Passwort angemeldet und das Benutzerkennwort geändert,
postgres'
indem ich zu gegangen binFile -> Change Password
quelle
trust
Sie folgen können diese und Passwort ändern in cmdNur eine Anmerkung, unter Linux können Sie einfach laufen
sudo su - postgres
, um der Postgres-Benutzer zu werden, und von dort aus ändern, was mit psql erforderlich ist.quelle
Bearbeiten Sie die Datei
/etc/postgresql/<version>/main/pg_hba.conf
und suchen Sie die folgende Zeile:Bearbeiten Sie die Zeile und ändern Sie sie
md5
am Ende intrust
und speichern Sie die DateiLaden Sie den postgresql- Dienst neu
Dadurch werden die Konfigurationsdateien geladen. Jetzt können Sie den
postgres
Benutzer ändern, indem Sie sich bei derpsql
Shell anmeldenAktualisieren Sie das
postgres
Passwort des BenutzersBearbeiten Sie die Datei
/etc/postgresql/<version>/main/pg_hba.conf
und wechseln Sietrust
zurück zumd5
und speichern Sie die DateiLaden Sie den postgresql- Dienst neu
Stellen Sie sicher, dass die Kennwortänderung funktioniert
quelle
Ich hatte gerade dieses Problem unter Windows 10 und das Problem in meinem Fall war, dass ich gerade lief
psql
und standardmäßig versuchte, mich mit meinem Windows-Benutzernamen ("Nathan") anzumelden, aber es gab keinen PostgreSQL-Benutzer mit diesem Namen. und das hat es mir nicht gesagt.Die Lösung bestand also darin,
psql -U postgres
nicht nur zu laufen, sondernpsql
das bei der Installation eingegebene Kennwort zu verwenden.quelle
Hinzufügen der Antwort für Windows-Benutzer für die neueste Postgres-Version (> 10),
Gehen Sie zu Ihrem Postgres-Installationsort und suchen Sie nach
pg_hba.conf
, Sie finden ihn in..\postgres\data\pg_hba.conf
Öffnen Sie diese Datei mit dem Editor und suchen Sie diese Zeile.
Ändern Sie die Methode von md5 in trust,
Gehen Sie nun zu Ihrer SQL Shell (PSQL) und lassen Sie alles leer.
Diesmal wird nicht nach dem Passwort gefragt, und Sie werden angemeldet.
Führen Sie nun diese Zeile aus,
ALTER USER yourusername WITH SUPERUSER
Jetzt können Sie die Shell mit \ q verlassen
Gehen Sie erneut zur Datei pg_hba.conf und ändern Sie METHOD erneut von trust in md5 und speichern Sie sie.
Melden Sie sich jetzt mit Ihrem neuen Benutzer und Passwort an und Sie können \ du auf seine Attribute überprüfen.
quelle
Für die 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 folgende Befehlszeile funktioniert nur, wenn Sie Zugriff auf die Befehlszeile haben.
Stattdessen können Sie die Windows-GUI-Anwendung "c: \ Windows \ system32 \ lusrmgr.exe" verwenden. Diese App verwaltet von Windows erstellte Benutzer. So können Sie jetzt das Passwort ändern.
quelle
Was ich getan habe, um das gleiche Problem zu lösen, war:
Öffnen Sie die Datei pg_hba.conf mit dem gedit-Editor vom Terminal aus:
Es wird nach dem Passwort gefragt. Geben Sie Ihr Administrator-Login-Passwort ein. Dadurch wird gedit mit der Datei geöffnet. Fügen Sie die folgende Zeile ein:
knapp unter -
Speichern und schließen Sie es. Schließen Sie das Terminal, öffnen Sie es erneut und führen Sie den folgenden Befehl aus:
Sie werden nun die psql-Konsole aufrufen. Ändern Sie nun das Passwort, indem Sie Folgendes eingeben:
Wenn es heißt, dass der Benutzer nicht existiert, wird er nicht
ALTER
verwendetCREATE
.Entfernen Sie zum Schluss die bestimmte Zeile, die Sie in pg_hba eingefügt haben, und speichern Sie sie.
quelle
Wenn Sie in Windows sind, können Sie einfach ausführen
und logge dich in postgres mit postgres / postgres als Benutzer / Passwort ein
quelle
Die Datei .pgpass im Home-Verzeichnis eines Benutzers oder die Datei, auf die PGPASSFILE verweist, kann Kennwörter enthalten, die verwendet werden sollen, wenn für die Verbindung ein Kennwort erforderlich ist (und kein anderes Kennwort angegeben wurde). Unter Microsoft Windows heißt die Datei% APPDATA% \ postgresql \ pgpass.conf (wobei% APPDATA% auf das Unterverzeichnis Anwendungsdaten im Benutzerprofil verweist).
Diese Datei sollte Zeilen im folgenden Format enthalten:
Hostname: Port: Datenbank: Benutzername: Passwort
(Sie können der Datei einen Erinnerungskommentar hinzufügen, indem Sie die obige Zeile kopieren und mit # voranstellen.) Jedes der ersten vier Felder kann ein Literalwert oder * sein, der mit einem beliebigen Wert übereinstimmt. Das Kennwortfeld aus der ersten Zeile, das den aktuellen Verbindungsparametern entspricht, wird verwendet. (Setzen Sie daher bei Verwendung von Platzhaltern spezifischere Einträge an die erste Stelle.) Wenn ein Eintrag Folgendes enthalten muss: oder \, maskieren Sie dieses Zeichen mit. Ein Hostname von localhost entspricht sowohl TCP- (Hostname localhost) als auch Unix-Domain-Socket-Verbindungen (pghost leer oder das Standard-Socket-Verzeichnis), die vom lokalen Computer kommen. In einem Standby-Server stimmt ein Datenbankname der Replikation mit Streaming-Replikationsverbindungen überein, die zum Masterserver hergestellt wurden. Das Datenbankfeld ist von begrenztem Nutzen, da Benutzer für alle Datenbanken im selben Cluster dasselbe Kennwort haben.
Auf Unix-Systemen müssen die Berechtigungen für .pgpass keinen Zugriff auf die Welt oder Gruppe 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, sodass keine besonderen Berechtigungsprüfungen durchgeführt werden.
quelle
Wenn Sie postgresql auf Mac OS ausführen, versuchen Sie diese :
Bearbeiten Sie die Datei pg_hba.conf
sudo vi /Library/PostgreSQL/9.2/data/pg_hba.conf
Ändern Sie die "md5" -Methode für alle Benutzer in "Vertrauen" am Ende der Datei
Suchen Sie den Namen des Dienstes
ls / Library / LaunchDaemons
Suchen Sie nach postgresql
Beenden Sie den Postgresql-Dienst
sudo launchctl stop com.edb.launchd.postgresql-9.2
Starten Sie den Postgresql-Dienst
sudo launchctl start com.edb.launchd.postgresql-9.2
Starten Sie die psql-Sitzung als Postgres
psql -U postgres
(sollte wegen der Einstellung "Vertrauen" nicht nach dem Passwort fragen)
Setzen Sie das Passwort in der psql-Sitzung durch Eingabe zurück
ALTER USER postgres mit Passwort 'Secure-New-Passwort';
eingeben
Bearbeiten Sie die Datei pg_hba.conf
Schalten Sie es wieder auf 'md5'
Starten Sie die Dienste erneut
quelle
Das hat bei Windows unter mir funktioniert:
Bearbeiten Sie die Datei pg_hba.conf unter C: \ Programme \ PostgreSQL \ 9.3 \ data.
# IPv4 local connections: host all all 127.0.0.1/32 trust
Ändern Sie die Methode von trust in md5 und starten Sie den Postgres-Dienst unter Windows neu.
Danach können Sie sich mit dem Benutzer postgres ohne Passwort mit pgadmin anmelden. Sie können das Passwort über Datei-> Passwort ändern ändern.
Wenn der Benutzer von postgres keine Superuser-Berechtigungen hat, können Sie das Kennwort nicht ändern. Melden Sie sich in diesem Fall mit einem anderen Benutzer (pgsql) mit Superuser-Zugriff an und gewähren Sie anderen Benutzern Berechtigungen, indem Sie mit der rechten Maustaste auf Benutzer klicken und Eigenschaften-> Rollenberechtigungen auswählen.
quelle