Postgres: autenticar como usuário postgres em script não interativo

2

Estou escrevendo um script não interativo que precisa executar comandos postgres. O script será executado apenas por root ou por um usuário com sudo de permissões, e os comandos postgres precisam ser executados como postgres user em postgresql. O problema é que postgresql sempre (tanto quanto eu posso dizer) solicita uma senha interativamente (ou seja, pqsl -U postgres -W ) ou não aceita uma senha (por exemplo, psql -U postgres -w ). Eu gostaria de passar uma senha na linha de comando, semelhante a como o mysql permite mysql -u user -p password . Como posso fazer isso com postgres?

    
por jayhendren 22.04.2014 / 19:40

3 respostas

2

Existem duas maneiras de fazer a mesma coisa.

Abordagem 1:

Adicione um arquivo .pgpass no diretório home do usuário (usuário que executa o script):

$ cat /home/user/.pgpass
hostname:port:database:user:password
$ chmod 600 /home/user/.pgpass

Depois de adicionar o acima, você não precisa adicionar senha em nenhum script que esteja usando. Ele irá se conectar diretamente.

Abordagem 2:

Adicione o seguinte no seu script de shell. Mas isso exporá sua senha e se tornará um problema se você estiver se comprometendo com qualquer repositório.

export PGPASSWORD=password
    
por 31.05.2016 / 15:56
4

Use a variável de ambiente PGPASSWORD . Por exemplo:

PGPASSWORD=<password> psql -U postgres -c "<postgresql query>"

Fonte

    
por 28.04.2014 / 19:53
1

Se você pode executar o psql como o usuário postgres, a solução mais útil é modificar pg_hba.conf para que o usuário Unix postgres, conectando via localhost / socket, seja autenticado sem qualquer senha pr arquivo externo. Na ponta do arquivo, insira isto:

local all postgres  peer

Isso, o TBMI é o padrão. Talvez alguém tenha achado que eles estavam sendo espertos ou mais seguros quando removeram essa linha, idk. Você também pode usar algo assim para um serviço de monitoramento:

local zabbix zabbix peer

para o qual você cria um nome de usuário e um banco de dados chamado "zabbix".

    
por 31.05.2016 / 16:16

Tags