Executando o postgreSQL 13.2 com SSL ativado.
Eu preciso me conectar a um banco de dados de um aplicativo de terceiros que requer um URI de conexão, mas não está funcionando. Então testei a conexão com o psql usando dois formatos diferentes com as mesmas credenciais. Um funcionou e outro não.
O comando a seguir me registra em mydb como usuário myuser:
# psql -U myuser -d mydb -h 127.0.0.1 -p 5432 -W
Password:
psql (13.2 (Debian 13.2-1.pgdg100+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
mydb=>
No entanto, este comando falha:
# psql postgresql://myuser:[email protected]:5432/mydb?sslmode=require
psql: error: FATAL: password authentication failed for user "myuser"
Estou usando exatamente as mesmas credenciais. Já verifiquei mais de 10 vezes. A remoção de "sslmode=require" não corrige o problema.
Meu arquivo pg_hba.conf contém:
host mydb myuser 127.0.0.1/32 password
Eu fiz a primeira linha no meu arquivo pg_hba.conf, então não pode ficar preso em nenhuma outra linha.
O que estou fazendo errado?
A senha que eu estava usando por acaso continha
%d0
. Isso funciona bem ao fazer login usando os parâmetros. Mas se você usar um URI de conexão, ele será interpretado como um valor codificado por porcentagem. Apenas por coincidência, minha senha continha o sinal de porcentagem seguido por um número hexadecimal válido.A alteração da senha ou a codificação percentual adequada do URI de conexão é a solução para esse problema. Há vários caracteres que precisam ser codificados por porcentagem em um URI de conexão.