Por muitos anos, usei a variável de ambiente $PGUSER
quando trabalhei com ferramentas de cliente, como psql/pg_dump/pg_restore.
Recentemente eu montei um novo servidor PG13, a env var $PGUSER
NÃO entra em vigor , quando eu tento usar as ferramentas do cliente em um terminal do servidor. Eu recebo uma mensagem como esta:
leon@mamba:~$ echo $PGUSER
postgres
leon@mamba:~$ psql
psql: erro: falha na conexão com o servidor no soquete "/var/run/postgresql/.s.PGSQL.5432":
FATAL: papel "leon" não existe
Se eu usar as ferramentas em um terminal de outro computador físico, a variável env entra em vigor normalmente.
Claro, a var foi definida em ambas as máquinas.
Meu pg_hba.conf:
# TIPO MÉTODO DE ENDEREÇO DE USUÁRIO DO BANCO DE DADOS
hospedar todos todos 127.0.0.1/32 confiança
hospedar todos todos 192.168.xx/16 md5
# Conexões locais IPv6:
hospedar todos todos ::1/128 confiança
Não basta definir uma variável, você também precisa
export
ajustá-la ao ambiente dos processos que você inicia.Se você definir uma variável com
ela será definida no ambiente do seu processo shell, mas os processos que você iniciar não herdarão a variável. Você tem que fazer da seguinte forma se quiser que a variável seja definida no ambiente do
psql
processo que você está iniciando:(Esta resposta se aplica ao Bourne shell, ao Korn shell
bash
e shells similares. Outros shells, como o C shell, têm maneiras diferentes de exportar variáveis.)