O superusuário não tem permissão para fazer login


32

Criei um portal de superusuário com o seguinte comando

create role portal with superuser password 'portal'

Quando tentei entrar no postgres com o usuário do portal, estou recebendo o seguinte erro no Rails.

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

Não consigo acompanhar o que está acontecendo.

é claro que posso alterar o usuário com o comando login para permitir que o usuário do portal efetue login. Gostaria de entender por que o superusuário não pode fazer login.


2
Porque um role. Nunca pode logar Você deveria ter usado create userse você quer algo que pode entrar.
a_horse_with_no_name

1
@a_horse_with_no_name Para ser preciso, não há diferença entre uma função e um usuário, mas há entre CREATE ROLEe CREATE USER, consulte a resposta de Craig.
Dez28

Respostas:


57

Você não especificou o LOGINdireito:

ALTER ROLE portal WITH LOGIN;

Se você usar CREATE USER, em vez CREATE ROLEdo LOGINdireito é concedido automaticamente; caso contrário, você deve especificá-lo na WITHcláusula da CREATEdeclaração.

Os superusuários não têm inerentemente o LOGINdireito; ainda é realizada uma verificação de permissões para superusuário para esse direito. O motivo disso é que você pode ter uma função de superusuário SET ROLE, mas não pode ser conectado diretamente.


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

Bem vindo ao site! Sua resposta não tem explicação - se você olhar em volta, boas respostas sempre lhe dirão não apenas o que, mas também o porquê . Com isso em vista, o que sua resposta acrescenta à de Craig?
Dezso
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.