Le superutilisateur n'est pas autorisé à se connecter

32

J'ai créé un portail de superutilisateur avec la commande suivante

create role portal with superuser password 'portal'

Lorsque j'ai essayé de me connecter à postgres avec l'utilisateur du portail, l'erreur suivante apparaît dans les rails.

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

Je ne peux pas suivre ce qui se passe.

Bien sûr, je peux modifier l'utilisateur avec la commande de connexion pour permettre à l'utilisateur du portail de se connecter. J'aimerais comprendre pourquoi le super utilisateur ne peut pas se connecter.

Antony
la source
2
Parce qu'un rolene peut jamais se connecter. Vous auriez dû l'utiliser create usersi vous voulez quelque chose qui puisse se connecter.
a_horse_with_no_name
1
@a_horse_with_no_name Pour être précis, il n'y a pas de différence entre un rôle et un utilisateur, mais entre CREATE ROLEet CREATE USER, voir la réponse de Craig.
dezso

Réponses:

57

Vous n'avez pas précisé le LOGINdroit:

ALTER ROLE portal WITH LOGIN;

Si vous utilisez au CREATE USERlieu de CREATE ROLEla LOGINdroite est accordée automatiquement; sinon, vous devez le spécifier dans la WITHclause de la CREATEdéclaration.

Les superutilisateurs n'ont pas le LOGINdroit en soi ; une vérification des autorisations est toujours effectuée pour le superutilisateur pour ce droit. La raison en est que vous pouvez avoir un rôle de superutilisateur SET ROLE, mais ne pouvez pas être connecté aussi directement.

Craig Ringer
la source
4
CREATE ROLE 'portal' WITH LOGIN SUPERUSER PASSWORD 'portal';
Trousse
la source
Bienvenue sur le site! Votre réponse manque d'explication - si vous regardez autour de vous, les bonnes réponses vous disent toujours non seulement quoi mais également pourquoi faire. Dans cette perspective, qu'est-ce que votre réponse ajoute à celle de Craig?
dezso