Суперрусеру заборонено входити


32

Я створив портал суперпользователя із наступною командою

create role portal with superuser password 'portal'

Коли я намагався увійти в postgres з користувачем порталу, я отримую наступну помилку в рейлах.

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

Я не можу стежити за тим, що відбувається.

Звичайно, я можу змінити користувача командою входу, щоб користувач порталу міг увійти. Я хотів би зрозуміти, чому супер користувач не може увійти.


2
Тому що roleніколи не можна входити в систему. Ви повинні були використовувати, create userякщо хочете щось увійти.
a_horse_with_no_name

1
@a_horse_with_no_name Якщо точніше, немає різниці між роллю та користувачем, але існує між CREATE ROLEі CREATE USER, див. відповідь Крейга.
dezso

Відповіді:


57

Ви не вказали LOGINправо:

ALTER ROLE portal WITH LOGIN;

Якщо ви використовуєте CREATE USERзамість CREATE ROLEна LOGINправо надається автоматично; в іншому випадку ви повинні вказати це в WITHпункті CREATEзаяви.

Суперусери по суті не мають LOGINправа; для цього права перевірка дозволів все ще проводиться. Причиною цього є те, що ви можете виконувати роль суперпользователя, який можете SET ROLE, але не можете бути пов’язані безпосередньо.


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

Ласкаво просимо на сайт! У вашій відповіді бракує пояснень - якщо ви озираєтесь, хороші відповіді завжди говорять вам не тільки про те, що, а й навіщо робити. З огляду на це, що ваша відповідь додає до відповіді Крейга?
dezso
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.