PostgreSQL: Das Ändern des Passworts für einen Benutzer funktioniert nicht

9
  • Ich habe PostgreSQLauf dem EC2Computer installiert und möchte jetzt das Passwort des Benutzers ändernpostgres
  • ich mache
$ sudo -u postgres psql
psql (9.1.5)
Type "help" for help.

postgres=# ALTER USER postgres WITH PASSWORD 'newpasswd';
ALTER ROLE
  • Dann verlasse ich die Shell und versuche mich mit einem neuen Passwort anzumelden
$ psql -U postgres -W
Password for user postgres: 
psql: FATAL:  Peer authentication failed for user "postgres"

Meine PostgreSQLVersion ist

$ psql --version
psql (PostgreSQL) 9.1.5
contains support for command-line editing

Was mache ich falsch?

Danke

UPDATE Ich habe Änderungen vorgenommen pg_hba.confund so sieht es jetzt aus

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
#local   all             all                                     peer
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Dann habe ich das neu gestartet postgres

$ sudo /etc/init.d/postgresql restart
 * Restarting PostgreSQL 9.1 database server                                                                                                                                               [ OK ] 

Ich habe versucht, mich erneut anzumelden, bin jedoch fehlgeschlagen

$ psql -U postgres -W
Password for user postgres: 
psql: FATAL:  Peer authentication failed for user "postgres"
Tagträumer
quelle
Wahrscheinlich ist das alte Passwort noch in Ihrer ~ / .pgpass-Datei gespeichert.
Nein, dort gibt es eine Passwortabfrage. Ich denke, das pg_hba.confist so eingerichtet, dass es keine Passwortauthentifizierung akzeptiert.
@willglynn, bitte überprüfen Sie mein Update, es schlägt wieder fehl, auch nach Änderungen inpg_hba.conf
Tagträumer

Antworten:

9

Wie Willglynn sagte, ist es wahrscheinlich Ihre pg_hba.conf-Datei.

Wenn Sie die folgende Zeile haben:

local   all    all     peer

dann ändern Sie es zu:

local   all    all     md5

Dann sollten Sie sich mit Ihrem neuen Passwort anmelden können (vorausgesetzt, Sie geben es korrekt ein) :)

David S.
quelle
Hallo @ David, ich habe es versucht, wie du erwähnt hast, aber es schlägt immer noch fehl. Bitte überprüfe mein Update so, wie ich es getan habe. Danke
Tagträumer
Es gibt immer noch eine peerZeile, die für lokale Verbindungen (UNIX-Domain-Sockets) des postgresBenutzers gilt. Dies schlägt fehl, es sei denn, das andere Ende wird als Betriebssystembenutzer ausgeführt postgres. Weitere Informationen finden Sie in der Dokumentation zu pg_hba.conf .
Obwohl ich laufen konnte django manage.py syncdb, werde ich immer noch über die pg_hba.confDokumentation lesen , die Sie erwähnt haben. Vielen Dank für Ihre Hilfe
Tagträumer
Ich musste nur hinzufügen-h localhost
Mike
5

Ich wollte das nur hinzufügen, zusätzlich zum Ändern der pg_hba.confDatei von

local   all    all     peer

zu

local   all    all     md5

Gemäß der akzeptierten Antwort konnte ich mich nur anmelden, nachdem ich dasselbe getan hatte, was das OP getan hatte, -hindem ich beim Versuch, mich anzumelden, das Flag übergeben hatte.

$ psql -U postgres -h localhost

Hoffentlich hilft dies jemandem in der Zukunft. Es hat mich verrückt gemacht!

JTG
quelle
0

Du hast das...

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
#local   all             all                                     peer
local   all             all                                     md5

Änderung dadurch:

# Database administrative login by Unix domain socket
local   all             postgres                                md5

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
#local   all             all                                     md5

und starten Sie den postgresql-Dienst von neu

sudo /etc/init.d/posgresql restart

diese Arbeit für mich

Israel L Rosas
quelle
Beim Ändern müssen pg_hba.confSie Postgres nicht neu starten. Das Neuladen der Konfiguration reicht aus. zB pg_ctl ... reloadoderselect pg_reload_conf()
a_horse_with_no_name
Einfach neu laden ... ich wusste es nicht ... danke
Israel L Rosas
-1

Für die Leute, die verrückt werden, nachdem sie das Passwort viele Male geändert und alles hier Erwähnte ausprobiert haben, denken Sie daran, den Ablauf der Benutzergültigkeit zu überprüfen. Sie können es in psql 9.x so einstellen, dass es niemals abläuft:

ALTER ROLE <username> VALID UNTIL 'infinity';
Kirpit
quelle