Administrator nie może się zalogować

32

Utworzyłem portal administratora z następującą komendą

create role portal with superuser password 'portal'

Kiedy próbowałem zalogować się do postgres z użytkownikiem portalu, pojawia się następujący błąd w szynach.

FATAL:  role "portal" is not permitted to log in

Nie mogę śledzić tego, co się dzieje.

oczywiście mogę zmienić użytkownika za pomocą polecenia logowania, aby umożliwić użytkownikowi portalu logowanie. Chciałbym zrozumieć, dlaczego superużytkownik nie może się zalogować.

Antony
źródło
2
Ponieważ rolenigdy nie można się zalogować. Powinieneś był użyć, create userjeśli chcesz czegoś, co może się zalogować.
a_horse_w_na_name
1
@ a_horse_with_no_name Aby być dokładnym, nie ma różnicy między rolą a użytkownikiem, ale jest między CREATE ROLEi CREATE USER, patrz odpowiedź Craiga.
dezso

Odpowiedzi:

57

Nie określiłeś LOGINprawa:

ALTER ROLE portal WITH LOGIN;

Jeśli używasz CREATE USERzamiast CREATE ROLEw LOGINprawo jest przyznawane automatycznie; w przeciwnym razie musisz to określić w WITHklauzuli CREATEoświadczenia.

Administratorzy nie mają z natury LOGINprawa; dla tego użytkownika nadal wykonywana jest kontrola uprawnień administratora. Powodem tego jest to, że możesz mieć rolę administratora, do której możesz SET ROLE, ale nie można połączyć się bezpośrednio.

Craig Ringer
źródło
4
CREATE ROLE 'portal' WITH LOGIN SUPERUSER PASSWORD 'portal';
Zestaw
źródło
Witamy na stronie! Twoja odpowiedź nie ma wyjaśnienia - jeśli się rozejrzysz, dobre odpowiedzi zawsze mówią nie tylko co, ale także dlaczego . Mając to na uwadze, co twoja odpowiedź dodaje do odpowiedzi Craiga?
dezso,