Utilizando comandos do PostgreSQL sem digitar senha

João Carlos Ottobboni
SIEDOS
Published in
2 min readMay 29, 2020

As vezes você precisa utilizar comandos no terminal ou executa-los em scripts, e as senhas podem ser um problema para se lidar, agora não mais:

Fornecendo a senha com arquivo de senhas

Criando o arquivo de configuração

$ touch ~/.pgpass$ chmod 0600 ~/.pgpass

Cada linha no arquivo define uma credencial para conexão

localhost:5432:project_a_db:jcottobboni:0yRkckAF8lYB 192.168.1.50:5432:project_b_db:jack:mCtEtSd8F08P 10.2.50.150:*:*:alice:flx1me0cTUJV

Assim você consegue executar comandos no terminal ou dentro de arquivos bash sem precisar digitar uma senha.

pg_dump -U jcottobboni -h localhost -p 5432 -Fc project_a_db > /home/jcottobboni/backup_for_project_a_db

Não e obrigatório utilizar o mesmo caminho para o arquivo especificado na criação do arquivo, o postgres fornece a configuração para customização do caminho.

export PGPASSFILE=~/.mycustomfile

O parâmetro -w

  • w, — no-password nunca emita um prompt de senha. Se o servidor exigir autenticação por senha e uma senha não estiver disponível por outros meios, como um arquivo .pgpass, a tentativa de conexão falhará. Essa opção pode ser útil em tarefas em lote e scripts em que nenhum usuário está presente para inserir uma senha

Fornecendo senha utilizando variáveis de ambiente

Outra maneira é definir variáveis de ambiente, você pode definir PGHOST, PGPORT, PGDATABASE, PGUSER e PGPASSWORD e usá-lo em seus scripts

Referências

PostgreSQL 9.3.4 Documentation — libpq — The Password File

PostgreSQL 9.3.4 Documentation — libpq — Environment Variables

--

--