eviter de deamnder plusieurs fois le mdp
This commit is contained in:
@@ -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 d’enregistrer 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."
|
||||||
|
|||||||
Reference in New Issue
Block a user