Acessar postgres sem passar senha em texto via linha de comando (psql)

Neste tutorial vamos apresentar uma maneira alternativa de acessar o postgres sem a necessidade de utilizar uma senha.

Ao tentar fazer o acesso via utilitário de linha de comando, temos a seguinte saída do terminal:

psql -U postgres
Password for user postgres:

No código acima, estamos tentando acessar o prompt de comando do sistema de gerenciamento banco de dados postgres. Ao tentar fazer o acesso vemos que o mesmo solicita uma senha. Esta senha foi configurada previamente, que eu também postei em outro tutorial. Veja aqui

O que desejamos fazer é acessar o prompt de comando diretamente sem a necessidade de utilizar credenciais para fazer o acesso.

Uma maneira de resolver este problema é colocando um arquivo oculto .pgpassno diretório $home do usuário.

Este arquivo deve possuir um padrão específico e o conteúdo deste arquivo deve seguir este formato:

hostname:port:database:username:password

Então supondo que estamos em uma instância (sistema operacional linux). Para fazer esta configuração devemos primeiramente criar o arquivo .pgpass para isso vamos utilizar o comando touch.

No terminal executar:

touch .pgpass

Repare que estamos colocando um ponto (".") que faz parte do nome do arquivo, isso é um requisito e significa que este é um arquivo oculto. Isso faz parte dos requisitos para este método funcionar.

Após criar o arquivo, devemos escrever o conteúdo do arquivo, para isso devemos seguir o padrão descrito na documentação. Para esta instância específica temos:

localhost:5432:nome_do_db:postgres:nãotenteadvinharminhasenha

Após isso basta tentar acessar o utilitário psql novamente:

psql

Ao tentar acessar, temos a seguinte mensagem:

WARNING: password file "/home/root/.pgpass" has group or world access; permissions should be u=rw (0600) or less

Este é uma mensagem de advertência, que mostra que o nível de acesso deste arquivo deve ser mais restrito (deve ser 0600), caso contrário ele é ignorado. Este é um comportamento documentado.

Então para mudar o nível de acesso do arquivo basta executar um chmod.

sudo chmod 0600 ~/.pgpass

Após executar este passos então será possível acessar a sua instância do sgbd diretamente sem a necessidade de uso de credenciais, pois elas já estão sendo utilizadas via arquivo .pgpass.

Referência: Documentação oficial