usuń wymaganie hasła dla postgresów użytkowników

46

Rozumiem, że po instalacji PostgreSQL nie ma hasła dla użytkownika root db (postgres):

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

... i zaleca się ustawienie:

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

(a następnie odpowiednio zaktualizuj pg_hba.confplik)

Moje pytanie brzmi: jakiego SQL użyć, aby powrócić do poprzedniej sytuacji, gdy użytkownik nie potrzebował hasła postgres.

Ogólnie, jak mogę usunąć wymaganie dotyczące hasła dla dowolnej roli? Nie pytam, jak zmienić hasło, ale jak usunąć wymaganie hasła ( passwdkolumna zerowa w tabeli pg_shadow).

Marcus Junius Brutus
źródło

Odpowiedzi:

55

To, czy hasło jest wymagane, czy nie, nie ma z tym nic wspólnego pg_shadowi czy hasło jest faktycznie zdefiniowane dla użytkownika. Tak, wiem, to dziwne.

pg_hba.confkontroluje metodę uwierzytelniania. Jeśli chcesz poprosić o hasło, użyj md5uwierzytelnienia. Jeśli chcesz pozwolić nikomu na logowanie bez hasła, użyj trust. Jeśli chcesz wymagać takiej samej nazwy użytkownika w systemie operacyjnym jak w PostgreSQL, użyj peer(UNIX, tylko dla połączeń lokalnych) lub sspi(Windows).

Jeśli jest ustawione hasło, ale pg_hba.confnie mówi PostgreSQL, aby o nie poprosiło, hasło jest ignorowane.

Jeśli pg_hba.confnakazuje PostgreSQL, aby poprosił o hasło, ale nie jest ustawiony, oznacza to, że wszystkie próby logowania zakończą się niepowodzeniem bez względu na podane hasło.

Craig Ringer
źródło
12

Użytkownik postgres domyślnie nie ma hasła. Aby usunąć hasło użytkownika (w tym przypadku dla użytkownika / roli postgres):

alter role postgres password null;

Musimy również uwierzytelniania ustawionego na trustw pg_hba.conf- widok szczegółów [ https://dba.stackexchange.com/a/19657/52550]

lalligood
źródło
3
teraz nie mogę uzyskać
dostępu
3
Tak, teraz jestem proszony o hasło i nie mogę się zalogować ...
Amalgovinus,
1
to polecenie zabrania mnie od postgres - tak jak powiedział @Amalgovinus.
Nam G VU
1
Jeśli nie ma dostępu z powodu błędu psql: fe_sendauth: no password supplied, a następnie edytować swoich C:\Program Files\PostgreSQL\10\data\pg_hba.confi wymienić md5z trustobok 127.0.0.1/32pod IPv4 local connectionsi obok ::1/128podIPv6 local connections
Marco Lacković
1

To działało dla mnie:

alter role postgres password '';

thouliha
źródło
4
Gdy robię to w Postgresie 10, pojawia się błąd „UWAGA: pusty ciąg nie jest prawidłowym hasłem, czyszczenie hasła”. Ale potem i tak zmienia moje hasło i nie mogę się zalogować za pomocą niczego! WTF !!
Amalgovinus
@Amalgovinus zobacz mój komentarz do odpowiedzi lalligood
Marco Lackovic