Por que o login do usuário não pode ser feito no Postgres?

5

Eu tentei configurar um usuário somente leitura no Postgres, mas eles não conseguem fazer logon. Não tenho certeza do próximo passo a dar para resolver o problema.

Quando eu tento e faço logon como usuário XXXX, recebo um erro - psql: FATAL: autenticação de senha falhou para o usuário "XXXX"

Olhando para o arquivo de log, vejo as seguintes linhas:

< 2014-05-20 10:22:24.830 NZST >FATAL:  password authentication failed for user "XXXX"
< 2014-05-20 10:22:24.830 NZST >DETAIL:  Connection matched pg_hba.conf line 104: "host DATABASENAME        XXXX           10.0.0.0/8              md5"

Eu, obviamente, tentei redefinir a senha - várias vezes, sem sucesso. Eu tentei mudar de md5 para senha que não funcionou. Curiosamente, configurar o mecanismo de autenticação para "confiar" funcionou.

Estou usando o Postgres 9.3.

Não consigo excluir este usuário para redefini-lo - recebo um erro "ERROR: role" XXXX "não pode ser eliminado porque alguns objetos dependem dele DETALHE: privilégios para o banco de dados DATABASENAME "

Se eu criar um novo usuário, esse novo usuário não terá problemas para se conectar ao banco de dados. (Eu dupliquei a linha apropriada em pg_hba.conf e modifiquei o nome de usuário do curso)

Emitir o comando "conceder tudo em DBNAME a XXXX" não parece fazer nenhuma diferença.

Quando eu faço um comando \ ddp eu recebo

    Default access privileges
  Owner   | Schema |   Type   | Access privileges 
----------+--------+----------+-------------------
 postgres | public | sequence | XXXX=r/postgres
 postgres | public | table    | XXXX=r/postgres

Não sei bem por que isso deve me impedir de soltar o usuário e recriá-lo - ou de como [corrigir] isso com segurança.

Qualquer insight sobre o que está acontecendo ou como depurar ainda mais os problemas de login seria muito apreciado.

    
por davidgo 19.05.2014 / 22:33

2 respostas

8

Ao receber este erro:

psql: FATAL: password authentication failed for user "XXXX"

apesar de a senha estar correta, a próxima coisa a verificar é a validade da conta:

SELECT usename, valuntil FROM pg_user;

Veja O usuário do PostgreSQL não pode se conectar ao servidor após alterar a senha para saber como um bug no PgAdmin pode redefinir incorretamente este valuntil no passado, tornando um usuário incapaz de se conectar com a mensagem de erro mencionada.

Se esse for o seu caso, você pode corrigi-lo com:

ALTER USER username VALID UNTIL 'infinity';
    
por 20.05.2014 / 09:57
1

Eu lutei com isso algumas vezes e inventei o seguinte método.

1) Modifique pg_hba.conf e defina o modo de autenticação como "confiável" para entradas "locais" e "host":

local all all trust

hospeda todos os 127.0.0.1/32 trust

2) Reinicie o banco de dados: postgres $ pg_ctl restart

3) Entre no banco de dados e defina a senha do postgres:

postgres $ psql

postgres = # alter senha do usuário postgres 'mypassword';

ALTERAR O PAPEL

postgres = # \ q

4) Configure o mecanismo de autenticação de volta para senha em pg_hba.conf:

local all all password

hospeda tudo 127.0.0.1/32 senha

(Eu presumo que isso também funcione para a autenticação md5, mas não tentei)

5) Reinicie o banco de dados uma última vez: postgres $ pg_ctl restart

    
por 29.12.2015 / 15:27