Estive lendo sobre o .pgpass
arquivo, mas não consigo fazê-lo funcionar para mim.
Meu .pgpass
arquivo está mais ou menos assim:
127.0.0.1:5432:accounts:fred:p@55w0rd
Eu defino o privilégio para 0600
(isso é no CentOS Linux) e tento:
psql
Onde recebo a mensagem:
psql: erro: FATAL: banco de dados "…" não existe
onde …
está meu nome de usuário.
Posso me conectar com sucesso se usar:
psql -u … -d accounts
então eu não acho que meu .pgpass
arquivo está fazendo seu trabalho.
Como posso fazê-lo funcionar?
.pgpass
não define um banco de dados padrão. Ele fornece apenas as senhas para uma combinação de nome de host, banco de dados e nome de usuário.Mas ainda depende de você fornecer o nome do host, banco de dados e nome de usuário ao iniciar o
psql
.Quando você executa
psql
sem nenhum argumento, não está fornecendo um nome de usuário ou senha - e não é retirado.pgass
- pode haver centenas de entradas lá. Qual devepsql
tomar?Conforme documentado no manual
psql
, assume o usuário atual do sistema operacional como o usuário padrão. Se nenhum banco de dados for fornecido,psql
assume um banco de dados com o nome do usuário (assim com o nome do usuário do sistema operacional atual se você também não fornecer um nome de usuário).Aparentemente, você deseja se conectar a um banco de dados que tenha um nome diferente do nome de usuário que deseja usar. Portanto, você deve fornecer um nome de banco de dados. Se
fred
for o usuário do seu sistema operacional, entãopsql -d accounts
deve ser suficiente.Se você quiser usar um usuário e banco de dados diferente dos padrões, use as variáveis de ambiente
PGUSER
ePGDATABASE
.