it-swarm.com.de

Entfernen Sie die Kennwortanforderung für Benutzer-Postgres

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

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

... und es wird empfohlen, es einzustellen mit:

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

(und aktualisieren Sie dann die pg_hba.conf Datei entsprechend)

Meine Frage ist: Was ist die SQL, um zur vorherigen Situation zurückzukehren, als für den Benutzer postgres kein Kennwort benötigt wurde.

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

50

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

pg_hba.conf Steuert die Authentifizierungsmethode. Wenn Sie ein Passwort anfordern möchten, verwenden Sie die Authentifizierung md5. Wenn Sie die Anmeldung ohne Kennwort zulassen möchten, verwenden Sie trust. Wenn Sie im Betriebssystem denselben Benutzernamen wie in PostgreSQL benötigen möchten, verwenden Sie peer (UNIX, nur für lokale Verbindungen) oder sspi (Windows).

Wenn ein Passwort festgelegt ist, pg_hba.conf PostgreSQL jedoch nicht auffordert, danach zu fragen, wird das Passwort ignoriert.

Wenn pg_hba.conf PostgreSQL anweist, nach einem Kennwort zu fragen, aber kein Kennwort festgelegt ist, schlagen alle Anmeldeversuche fehl, unabhängig davon, welches Kennwort angegeben wird.

63
Craig Ringer

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

alter role postgres password null;

Wir müssen auch die Authentifizierung in pg_hba.conf - Details anzeigen auf trust setzen

15
lalligood

Das hat bei mir funktioniert:

alter role postgres password '';

1
thouliha