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 .pgpass
no 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