J'ai écrit un script pour REINDEX
indexer dans une base de données. Voici l'un d'entre eux:
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
Le problème est que je ne peux pas exécuter ce script en mode autonome. psql
demande un mot de passe chaque fois qu'il s'exécute. Il y a aussi deux limitations:
Je ne peux pas créer un utilisateur sur la base de données sans mot de passe.
Parce que
REINDEX
verrouille les tables, je devrais utilisersleep <num>
entre chaqueREINDEX
.
Y a-t-il une solution automatique?
postgresql
index
psql
Majid Azimi
la source
la source
peer
une méthode d'authentification pour les connexions locales. Actuellement, uniquement pour Linux, BSD, OS X ou Solaris (pas Windows)..pgpass
option, vous devez toujours spécifier le nom d'utilisateur, la base de données et le nom d'hôte (si vous en avez l'habitude) dans lapsql
commandeexport PGPASSWORD="your_pw"
pour aller la version 1Un exemple simple avec
PGPASSWORD
sera quelque chose comme:J'espère que ça aide.
la source
Selon les autorisations de votre compte, l'exemple sans spécifier la base de données peut échouer, car les autorisations des utilisateurs sont vérifiées par rapport à la base de données à laquelle vous vous connectez. Il vaut mieux spécifier explicitement la base de données aussi.
la source
Des réponses très utiles dans ce fil. J'ajoute simplement ceci pour Ubuntu 18.04:
Cela vous mènera à postgres sans l'invite du mot de passe, sans avoir à définir de variables d'environnement. Ce n'est pas un paramètre permanent.
la source