Passwortanforderung für Benutzer postgres entfernen

46

Ich verstehe, dass PostgreSQL bei der Installation kein Kennwort für seinen Datenbank-Root-Benutzer (postgres) hat:

postgres=# select usename, passwd is null from pg_shadow;
 usename  | ?column? 
----------+----------
 postgres | t
(1 row)

... und man sollte es einstellen mit:

alter role postgres password '<<very-secret>>';

(und aktualisieren Sie dann die pg_hba.confDatei entsprechend)

Meine Frage lautet: Mit welcher SQL-Anweisung können Sie zur vorherigen Situation zurückkehren, in der für den Benutzer kein Kennwort erforderlich war postgres.

Wie kann ich im Allgemeinen die Kennwortanforderung für eine Rolle entfernen? Ich frage nicht, wie das Kennwort geändert werden soll, sondern wie die Kennwortanforderung entfernt werden soll ( passwdSpalte null in der Tabelle pg_shadow).

Marcus Junius Brutus
quelle

Antworten:

55

Ob ein Passwort erforderlich ist oder nicht, hat nichts damit zu tun pg_shadowund ob tatsächlich ein Passwort für den Benutzer definiert ist. Ja, ich weiß, das ist komisch.

pg_hba.confSteuert die Authentifizierungsmethode. Wenn Sie ein Passwort anfordern möchten, verwenden Sie die md5Authentifizierung. Wenn Sie die Anmeldung ohne Kennwort für andere Personen zulassen möchten, verwenden Sie trust. Wenn Sie im Betriebssystem den gleichen Benutzernamen wie in PostgreSQL benötigen möchten, verwenden Sie peer(UNIX, nur für lokale Verbindungen) oder sspi(Windows).

Wenn ein Kennwort festgelegt ist, pg_hba.confPostgreSQL jedoch nicht dazu auffordert, danach zu fragen, wird das Kennwort ignoriert.

Wenn pg_hba.confPostgreSQL auffordert, nach einem Kennwort zu fragen, jedoch keines festgelegt ist, schlagen alle Anmeldeversuche fehl, unabhängig davon, welches Kennwort angegeben wurde.

Craig Ringer
quelle
12

Der Benutzer postgres hat standardmäßig kein Kennwort. So entfernen Sie ein Benutzerkennwort (in diesem Fall für den Benutzer / die Rolle postgres):

alter role postgres password null;

Wir müssen auch die Authentifizierung auf trustIn- pg_hba.confView-Details einstellen [ https://dba.stackexchange.com/a/19657/52550].

lalligood
quelle
3
Jetzt kann ich nicht in PSQL zugreifen
Roberth Solís
3
Ja, jetzt werde ich nach einem Passwort gefragt und kann mich nicht anmelden ...
Amalgovinus
1
Dieser Befehl verbietet mir Postgres - genau wie @Amalgovinus sagte.
Nam G VU
1
Wenn Sie aufgrund des Fehlers nicht zugreifen können psql: fe_sendauth: no password supplied, bearbeiten Sie Ihre C:\Program Files\PostgreSQL\10\data\pg_hba.confund ersetzen Sie sie md5durch trustneben 127.0.0.1/32unter IPv4 local connectionsund neben ::1/128unterIPv6 local connections
Marco Lackovic
1

Das hat bei mir funktioniert:

alter role postgres password '';

Thouliha
quelle
4
Wenn ich dies in Postgres 10 mache, erhalte ich die Fehlermeldung "HINWEIS: Leere Zeichenfolge ist kein gültiges Passwort, das Passwort wird gelöscht". Aber dann ändert sich trotzdem mein Passwort und ich kann mich mit nichts einloggen! WTF !!
Amalgovinus
@ Malgovinus siehe meinen Kommentar zu lalligood Antwort
Marco Lackovic