Eu tenho um cron job diário para despejar meu banco de dados. Parte do crontab inclui o seguinte:
01 01 * * * root /etc/cron.d/backupDaily.sh
e parte do script de backup contém o seguinte:
cd /data/pgsql/
sudo -u postgres /usr/pgsql-12/bin/pg_dumpall>/data/pgsql/pg.sql
Minhas anotações antigas referem-se a colocar as credenciais em um arquivo como /.pgpass
. No entanto, atualizei meu servidor algumas vezes desde o início e parece que não tenho mais esse arquivo.
Alguém pode me dizer como posso escapar disso? Isso sugere que meu postgres
usuário não tem uma senha?
Aqui está o que está no meu pg_hba.conf
arquivo:
# TYPE DATABASE USER ADDRESS METHOD
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 192.168.0.0/24 trust
host all all 192.168.1.0/24 trust
host all all 192.168.77.0/24 trust
A
pg_hba.conf
linhapermite conexões locais com autenticação confiável , ou seja, sem senha. É por isso que seu script de backup funciona mesmo sem um arquivo de senha.
O usuário
postgres
ainda pode ter uma senha. Como superusuário, você pode ver o hash da senha com".pgpass" normalmente é um arquivo oculto no diretório inicial do usuário (não na raiz, como sugere sua notação - se você se referir ao fato de que crontab é para o usuário root e executa o script como root, na maioria dos sistemas o home diretório para root seria '/root/', ou algo assim, não '/'). Atualizar seu servidor PostgreSQL não teria nada a ver com isso. Ele ainda funcionaria no novo servidor da mesma forma que o antigo, desde que você não fizesse nada para quebrá-lo. Atualizar o sistema operacional do servidor pode fazer com que esse arquivo desapareça, dependendo de como você fez isso.
Você pode testar isso usando a opção -W com o psql e, em seguida, inserindo uma senha obviamente errada em um prompt. Se isso gerar um erro de senha, provavelmente você tem um arquivo .pgpass válido, quer saiba disso ou não. Ou você pode simplesmente executar
ls -a
no diretório inicial (do root) para mostrar até mesmo arquivos ocultos.