Eu escrevi um script para REINDEX
índices em um banco de dados. Aqui está um deles:
echo -e "\nreindex for unq_vbvdata_vehicle started at: `date "+%F %T"`" >> ${LOG_FILE}
psql -U ${USERNAME} -h ${HOSTNAME} -d ${DBNAME} -c "REINDEX INDEX scm_main.unq_vbvdata_vehicle;"
if [[ ${?} -eq 0 ]]; then
echo "reindex for unq_vbvdata_vehicle finished at: `date "+%F %T"`" >> ${LOG_FILE}
else
echo "reindex for unq_vbvdata_vehicle failed" >> ${LOG_FILE}
exit 1
fi
O problema é que não consigo executar este script no modo autônomo. psql
está solicitando a senha toda vez que é executado. Há também duas limitações:
Não consigo criar um usuário no banco de dados sem senha.
Como
REINDEX
trava as tabelas, devo usarsleep <num>
entre cadaREINDEX
.
Existe alguma solução automática?
Você tem quatro opções em relação ao prompt de senha:
http://www.postgresql.org/docs/current/static/libpq-envars.html
http://www.postgresql.org/docs/current/static/libpq-pgpass.html
http://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-TRUST
http://www.postgresql.org/docs/current/static/libpq-connect.html#AEN42532
Um exemplo simples com
PGPASSWORD
será algo como:Espero que ajude.
Dependendo das permissões da sua conta, o exemplo sem especificar o banco de dados pode falhar, porque as permissões do usuário são verificadas no banco de dados ao qual você se conecta. É melhor especificar explicitamente o banco de dados também.
No Windows , você pode configurá-lo em todo o sistema:
Ou, por segurança, se você não quiser em todo o sistema, pode fazer login em uma linha:
Respostas muito úteis neste tópico. Estou apenas adicionando isso para o Ubuntu 18.04:
Isso levará você ao postgres sem o prompt de senha, sem ter que definir nenhuma variável de ambiente. Esta não é uma configuração permanente.
Vai funcionar.