Utilizando comandos do PostgreSQL sem digitar senha
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