1
resposta

[Dúvida] check_time_query Windows 11 erro na senha

Meu script não valida a senha:

Encontrado statement
Encontrado duration
psql: erro: a conexão com o servidor em "localhost" (127.0.0.1), porta 5432 falhou: FATAL: autenticação do tipo senha falhou para o usuário "postgres"
Resultado da verificação:
Query já incluída na tabela
Encontrado statement
Encontrado duration
psql: erro: a conexão com o servidor em "localhost" (127.0.0.1), porta 5432 falhou: FATAL: autenticação do tipo senha falhou para o usuário "postgres"
Resultado da verificação:
Query já incluída na tabela
Filtragem de logs concluída
psql: erro: a conexão com o servidor em "localhost" (127.0.0.1), porta 5432 falhou: FATAL: autenticação do tipo senha falhou para o usuário "postgres"
Execução de comandos SQL concluída
PS E:\CURSOPOST>

Preciso passar algum parâmetro?

1 resposta

Olá, Lazaro. Como vai?

Esse erro FATAL: autenticação do tipo senha falhou é um clássico no gerenciamento de bancos de dados, especialmente ao automatizar scripts no Windows. O problema ocorre porque o psql (cliente do PostgreSQL) é um executável interativo; por padrão, ele para tudo e espera que um ser humano digite a senha no teclado. Como seu script está rodando em segundo plano, ele não consegue "digitar" a senha e a conexão é recusada.

Como você é Gerente de Projetos de TI, sabe que em automação precisamos eliminar a interação manual. Para o PostgreSQL no Windows 11, você tem três caminhos principais para resolver isso sem precisar passar a senha como um parâmetro direto (o que seria um risco de segurança):

1. O Arquivo .pgpass (Recomendado)

O PostgreSQL procura por um arquivo chamado pgpass.conf para buscar credenciais automaticamente.

  • Localização: No Windows, ele deve estar em %APPDATA%\postgresql\pgpass.conf.
  • Formato: localhost:5432:nome_do_banco:postgres:sua_senha
  • Vantagem: É a forma mais segura e profissional de gerenciar automações locais.

2. Variável de Ambiente PGPASSWORD

Você pode definir a senha temporariamente na sessão do seu terminal (PowerShell) antes de rodar o script:

$env:PGPASSWORD = "sua_senha_aqui"
.\seu_script.ps1
  • Atenção: Use isso apenas para testes rápidos, pois a senha pode ficar exposta no histórico do terminal.

3. Configuração pg_hba.conf (Nível Adm)

Se você estiver em um ambiente de desenvolvimento controlado e quiser que o usuário postgres se conecte localmente sem senha:

  1. Localize o arquivo pg_hba.conf na pasta data do seu Postgres.
  2. Mude a linha de conexão host para 127.0.0.1/32 de scram-sha-256 (ou md5) para trust.
  3. Reinicie o serviço do PostgreSQL.

Dica técnica:
Verifique se o seu script check_time_query não está tentando usar aspas duplas de forma errada na senha dentro do código, o que também causa falha de autenticação. O Windows 11 às vezes lida de forma diferente com caracteres especiais em strings do PowerShell.

Se estiver usando o PowerShell para disparar o comando, tente encapsular a chamada do psql garantindo que o ambiente reconheça o usuário.

Qual dessas abordagens melhor se adapta à política de segurança do seu projeto atual?