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.


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.


4
CREATE ROLE 'portal' WITH LOGIN SUPERUSER PASSWORD 'portal';

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.