Der Superuser darf sich nicht anmelden

32

Ich habe mit dem folgenden Befehl ein Superuser-Portal erstellt

create role portal with superuser password 'portal'

Beim Versuch, mich mit einem Portalbenutzer bei postgres anzumelden, wird die folgende Fehlermeldung in Rails angezeigt.

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

Ich kann nicht verfolgen, was los ist.

Natürlich kann ich den Benutzer mit dem Anmeldebefehl ändern, damit sich der Portalbenutzer anmelden kann. Ich würde gerne verstehen, warum sich Superuser nicht anmelden können.

Antonius
quelle
2
Weil roleman sich niemals einloggen kann. Sie sollten verwenden, create userwenn Sie etwas wollen, das sich einloggen kann.
a_horse_with_no_name
1
@a_horse_with_no_name Um genau zu sein, gibt es keinen Unterschied zwischen einer Rolle und einem Benutzer, aber zwischen CREATE ROLEund CREATE USER, siehe Craigs Antwort.
Dezso

Antworten:

57

Sie haben das LOGINRecht nicht angegeben :

ALTER ROLE portal WITH LOGIN;

Wenn Sie CREATE USERstattdessen CREATE ROLEdas LOGINRecht verwenden, wird es automatisch gewährt; Andernfalls müssen Sie dies in der WITHKlausel der CREATEAnweisung angeben .

Superuser haben nicht von Natur aus das LOGINRecht; Für dieses Recht wird weiterhin eine Berechtigungsprüfung für den Superuser durchgeführt. Der Grund dafür ist, dass Sie eine Superuser-Rolle haben können, die Sie können SET ROLE, aber nicht so direkt verbunden werden können.

Craig Ringer
quelle
4
CREATE ROLE 'portal' WITH LOGIN SUPERUSER PASSWORD 'portal';
Kit
quelle
Willkommen auf der Seite! Ihrer Antwort fehlt eine Erklärung - wenn Sie sich umschauen, sagen Ihnen gute Antworten immer nicht nur was, sondern auch warum . Was bringt Ihre Antwort in Anbetracht dessen zu der von Craig?
Dezso