remover requisito de senha para o usuário postgres

46

Entendo que, após a instalação, o PostgreSQL não tem senha para seu usuário root db (postgres):

postgres=# select usename, passwd is null from pg_shadow;
 usename  | ?column? 
----------+----------
 postgres | t
(1 row)

... e é aconselhável configurá-lo com:

alter role postgres password '<<very-secret>>';

(e atualize o pg_hba.confarquivo de acordo)

Minha pergunta é: qual é o SQL a ser usado para voltar à situação anterior quando nenhuma senha era necessária para o usuário postgres.

Em geral, como posso remover o requisito de senha para qualquer função? Não estou perguntando como alterar a senha, mas como remover o requisito de senha ( passwdcoluna nula na tabela pg_shadow).

Marcus Junius Brutus
fonte

Respostas:

55

Se uma senha é necessária ou não, nada tem a ver com isso pg_shadowe se uma senha está realmente definida para o usuário. Sim, eu sei, isso é estranho.

pg_hba.confcontrola o método de autenticação. Se você deseja solicitar uma senha, use md5autenticação. Se você deseja permitir o login sem senha para ninguém, use trust. Se você deseja exigir o mesmo nome de usuário no sistema operacional que no PostgreSQL, use peer(UNIX, apenas para conexões locais) ou sspi(Windows).

Se houver uma senha definida, mas pg_hba.confnão solicitar ao PostgreSQL para solicitá-la, a senha será ignorada.

Se o pg_hba.confPostgreSQL disser para solicitar uma senha, mas não houver nenhuma definida, todas as tentativas de login falharão, independentemente da senha fornecida.

Craig Ringer
fonte
12

O usuário do postgres, por padrão, não tem senha. Para remover uma senha de usuário (neste caso, para o usuário / função do postgres):

alter role postgres password null;

Nós também precisamos de autenticação definido para trustem pg_hba.conf- Ver detalhes [ https://dba.stackexchange.com/a/19657/52550]

lalligood
fonte
3
agora eu não consigo acessar psql
Roberth Solís
3
Sim, agora estou pediu uma senha e não consigo entrar ...
Amalgovinus
1
esse comando me proíbe do postgres - o mesmo que @Amalgovinus disse.
Nam G VU
1
Se você não puder acessar devido ao erro psql: fe_sendauth: no password supplied, edite seu C:\Program Files\PostgreSQL\10\data\pg_hba.confe substitua md5por trustpróximo a 127.0.0.1/32abaixo IPv4 local connectionse próximo a ::1/128abaixoIPv6 local connections
Marco Lackovic
1

Isso funcionou para mim:

alter role postgres password '';

thouliha
fonte
4
Quando faço isso no postgres 10, recebo o erro "AVISO: cadeia vazia não é uma senha válida, limpando a senha". Mas isso muda minha senha de qualquer maneira e não consigo fazer login com nada! WTF !!
Amalgovinus
@Amalgovinus ver meu comentário na resposta lalligood
Marco Lackovic