El superusuario no puede iniciar sesión

32

Creé un portal de superusuario con el siguiente comando

create role portal with superuser password 'portal'

Cuando intenté iniciar sesión en postgres con el usuario del portal, recibo el siguiente error en rails.

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

No puedo seguir lo que está pasando.

Por supuesto, puedo modificar el usuario con el comando de inicio de sesión para permitir que el usuario del portal inicie sesión. Me gustaría entender por qué el súper usuario no puede iniciar sesión.

Antonio
fuente
2
Debido a que una role. Nunca puede conectarse Debería haber usado create usersi quieres algo que puede conectarse.
a_horse_with_no_name
1
@a_horse_with_no_name Para ser precisos, no hay diferencia entre un rol y un usuario, pero sí existe entre CREATE ROLEy CREATE USER, vea la respuesta de Craig.
dezso

Respuestas:

57

No especificó el LOGINderecho:

ALTER ROLE portal WITH LOGIN;

Si se utiliza CREATE USERen lugar de CREATE ROLEla LOGINderecha se concede de forma automática; de lo contrario, debe especificarlo en la WITHcláusula de la CREATEdeclaración.

Los superusuarios no tienen inherentemente el LOGINderecho; todavía se realiza una verificación de permisos para el superusuario por este derecho. La razón de esto es para que pueda tener un rol de superusuario que pueda SET ROLE, pero que no pueda conectarse directamente.

Craig Ringer
fuente
4
CREATE ROLE 'portal' WITH LOGIN SUPERUSER PASSWORD 'portal';
Equipo
fuente
Bienvenido al sitio! Su respuesta carece de explicación: si mira a su alrededor, las buenas respuestas siempre le dicen no solo qué sino también por qué hacer. Con esto a la vista, ¿qué agrega su respuesta a la de Craig?
dezso