eviter de deamnder plusieurs fois le mdp

This commit is contained in:
2025-04-04 07:12:37 +02:00
parent 58b6a44819
commit b75afa7df8

View File

@@ -25,40 +25,47 @@ fi
read -s -p "🔑 Entrez le mot de passe de l'utilisateur 'postgres' : " POSTGRES_PASSWORD read -s -p "🔑 Entrez le mot de passe de l'utilisateur 'postgres' : " POSTGRES_PASSWORD
echo "" echo ""
export PGPASSWORD="${POSTGRES_PASSWORD}" # Générer le mot de passe du rôle
echo "🔐 Génération d'un mot de passe fort pour le rôle '$ROLE_NAME'..."
ROLE_PASSWORD=$(generate_token 20)
echo "🔎 Vérification de l'existence du rôle PostgreSQL '$ROLE_NAME'..." # Générer un fichier SQL temporaire pour la vérification + création
ROLE_EXISTS=$(sudo -u postgres psql -tAc "SELECT 1 FROM pg_roles WHERE rolname='${ROLE_NAME}'") SQL_FILE=$(mktemp)
if [[ "$ROLE_EXISTS" == "1" ]]; then cat <<EOF > "$SQL_FILE"
echo "⚠️ Le rôle '$ROLE_NAME' existe déjà." DO \$\$
else BEGIN
echo "🔐 Génération d'un mot de passe fort pour le rôle '$ROLE_NAME'..." IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = '${ROLE_NAME}') THEN
ROLE_PASSWORD=$(generate_token 20) RAISE NOTICE '🛠 Création du rôle "${ROLE_NAME}"...';
CREATE ROLE ${ROLE_NAME} WITH LOGIN PASSWORD '${ROLE_PASSWORD}';
ELSE
RAISE NOTICE '⚠️ Le rôle "${ROLE_NAME}" existe déjà.';
END IF;
END
\$\$;
EOF
echo "🛠 Création du rôle '$ROLE_NAME' avec LOGIN et mot de passe..." # Une seule exécution de psql via sudo avec mot de passe PostgreSQL exporté
sudo -u postgres psql -c "CREATE ROLE ${ROLE_NAME} WITH LOGIN PASSWORD '${ROLE_PASSWORD}';" echo "🔎 Exécution des commandes SQL avec sudo..."
sudo -u postgres bash -c "PGPASSWORD='${POSTGRES_PASSWORD}' psql -v ON_ERROR_STOP=1 -f '${SQL_FILE}'"
echo "" rm -f "$SQL_FILE"
echo "✅ Rôle '$ROLE_NAME' créé avec succès."
echo "-------------------------------------------"
echo " Nom du rôle : ${ROLE_NAME}"
echo " Mot de passe : ${ROLE_PASSWORD}"
echo "-------------------------------------------"
# Proposer d'enregistrer dans .pgpass # Affichage des identifiants si création
read -p "💾 Voulez-vous enregistrer ces identifiants dans ~/.pgpass ? (y/n) " SAVE_PASS echo ""
if [[ "$SAVE_PASS" =~ ^[Yy]$ ]]; then echo "-------------------------------------------"
PGPASS_FILE="${HOME}/.pgpass" echo " Nom du rôle : ${ROLE_NAME}"
echo "*:*:*:${ROLE_NAME}:${ROLE_PASSWORD}" >> "$PGPASS_FILE" echo " Mot de passe : ${ROLE_PASSWORD}"
chmod 600 "$PGPASS_FILE" echo "-------------------------------------------"
echo "✅ Identifiants sauvegardés dans $PGPASS_FILE"
fi
echo "⚠️ Pensez à sauvegarder ces informations si vous ne les enregistrez pas." # Proposer denregistrer dans ~/.pgpass
read -p "💾 Voulez-vous enregistrer ces identifiants dans ~/.pgpass ? (y/n) " SAVE_PASS
if [[ "$SAVE_PASS" =~ ^[Yy]$ ]]; then
PGPASS_FILE="${HOME}/.pgpass"
echo "*:*:*:${ROLE_NAME}:${ROLE_PASSWORD}" >> "$PGPASS_FILE"
chmod 600 "$PGPASS_FILE"
echo "✅ Identifiants sauvegardés dans $PGPASS_FILE"
fi fi
unset PGPASSWORD echo "⚠️ Pensez à sauvegarder ces informations si vous ne les enregistrez pas."
unset POSTGRES_PASSWORD
echo "🎉 Opération terminée." echo "🎉 Opération terminée."