O Postgres deseja criar um arquivo $HOME/.psql_history
, onde ele armazenará todas as suas consultas e comandos do psql
client. Pode muito bem querer fazer outra coisa em $HOME
, mas não vejo nenhuma evidência na forma de outros arquivos ocultos. E não criará realmente o arquivo de histórico, a menos que você esteja usando psql
interativamente, o que você não é.
Eu tive exatamente este mesmo problema e encontrei esta pergunta, mas a resposta aceita não foi aceitável para mim - eu não deveria ter permissão para postgres deixar um rastro de minhas consultas em qualquer diretório em que eu esteja quando eu executo um script!
@ Corey, a solução que você mencionou no seu comentário ( cd /tmp
antes de chamar sudo...
) é provavelmente a melhor. psql
não criará este arquivo em /tmp
(tenho certeza de que isso é deliberado, pois pode permitir que usuários sem privilégios leiam o arquivo).
Existem outras duas soluções em que posso pensar:
-
Execute psql
em um shell de login adicionando -i
ao seu comando
sudo -i -u postgres psql < setup_dev_db.sql
Isso definirá o diretório $HOME
to postgres
HOME
, listado em /etc/passwd
. Para o Ubuntu, isso é /var/lib/postgres
. Mas como você está enviando comandos, não criará um arquivo .psql_history
. No entanto, se você usar o psql
interativo, qualquer outra pessoa com privilégios sudo
na máquina terá acesso ao seu histórico de comandos.
Não tenho certeza se há outras consequências negativas para a execução de um shell de login nessa situação.
-
Execute psql
como um usuário com menos privilégios, por exemplo,
$ psql dev_db -hlocalhost corey_dev -W < setup_dev_db.sql
Se isso for um problema porque você deixa a criação do usuário postgres no seu script setup_dev_db.sql
, e você ainda não tem nenhum usuário, apenas adicione um comando createuser
no seu script primeiro, algo assim:
$ sudo -u postgres createuser corey_dev -P
e talvez ...
$ sudo -u postgres createdb dev_db "Dev database"
NOTA: Ao usar o psql
cliente interativamente (que você não está aqui), se vir uma mensagem como could not change directory to "/home/corey/scripts": Permission denied
message ****, psql
vai escrever em /var/lib/postgres/.psql_history
(ou onde quer que seja $HOME
)! Se você já viu esse aviso ao usar o psql
interativo, vá em frente - você provavelmente encontrará um arquivo de histórico oculto.