+ Responder ao Tópico



  1. #1

    Padrão shell script + postgresql + senha

    Caros, estou tentando fazer um script que conecte ao banco e execute algumas funções no BD, no entanto para essa conexão preciso fornecer a senha do "user", e esta senha só é aceita no prompt e não na linha de comando onde passo o "user". Ex.: vacuumdb -f -z -d bd_dados -u user

    Teriam alguma ideia de como no shell script eu poderia passar esta senha para o prompt.

    Grato

  2. #2

    Padrão

    Não é possível passar a senha via linha de comando para o postgres, as suas alternativas são:

    1) Abrir acesso ao postgres como trust (não remomendado, o banco vai ficar aberto)

    2) Exportar uma variável de ambiente para armazenar a senha (não recomendado, em algumas versões de ps usuários normais conseguem ver essa variável).

    3) Utilizar o arquivo de autenticação ~/.pgpass (a melhor opção).

    Se o seu script vai rodar como root, crie um arquivo chamado /root/.pgpass com o seguinte conteúdo:
    localhost:5432:*: postgres:senha
    sem espaços entre os campos

    Desta forma o usuário postgres pode conectar no banco em localhost sem informar senha, pois a mesma já está informada neste arquivo.

    lembre de corrigir as permissões: chmod 600 /root/.pgpass

    Falow

  3. #3

    Padrão

    Citação Postado originalmente por mvzeppelin Ver Post
    Não é possível passar a senha via linha de comando para o postgres, as suas alternativas são:

    1) Abrir acesso ao postgres como trust (não remomendado, o banco vai ficar aberto)

    2) Exportar uma variável de ambiente para armazenar a senha (não recomendado, em algumas versões de ps usuários normais conseguem ver essa variável).

    3) Utilizar o arquivo de autenticação ~/.pgpass (a melhor opção).

    Se o seu script vai rodar como root, crie um arquivo chamado /root/.pgpass com o seguinte conteúdo:
    localhost:5432:*: postgres:senha
    sem espaços entre os campos

    Desta forma o usuário postgres pode conectar no banco em localhost sem informar senha, pois a mesma já está informada neste arquivo.

    lembre de corrigir as permissões: chmod 600 /root/.pgpass

    Falow
    mvzeppelin, muito obrigado pela dica/solução, me será muito util.