notes-techniques/scripts/server-postgres/create_pg_role.sh

65 lines
2.0 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
# Importer les fonctions communes
source "$(dirname "$0")/../common/common_utils.sh"
# Vérifier si le script est exécuté en root
check_root
set -e
# Demande interactive si le rôle nest pas passé en paramètre
if [[ -n "$1" ]]; then
ROLE_NAME="$1"
else
read -p "👤 Entrez le nom du rôle PostgreSQL à créer : " ROLE_NAME
fi
if [[ -z "$ROLE_NAME" ]]; then
echo "❌ Le nom du rôle est obligatoire."
exit 1
fi
# Demander le mot de passe de l'utilisateur 'postgres'
read -s -p "🔑 Entrez le mot de passe de l'utilisateur 'postgres' : " POSTGRES_PASSWORD
echo ""
export PGPASSWORD="${POSTGRES_PASSWORD}"
echo "🔎 Vérification de l'existence du rôle PostgreSQL '$ROLE_NAME'..."
ROLE_EXISTS=$(psql -U postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='${ROLE_NAME}'")
if [[ "$ROLE_EXISTS" == "1" ]]; then
echo "⚠️ Le rôle '$ROLE_NAME' existe déjà."
else
echo "🔐 Génération d'un mot de passe fort pour le rôle '$ROLE_NAME'..."
ROLE_PASSWORD=$(generate_token 20)
echo "🛠 Création du rôle '$ROLE_NAME' avec LOGIN et mot de passe..."
psql -U postgres -c "CREATE ROLE ${ROLE_NAME} WITH LOGIN PASSWORD '${ROLE_PASSWORD}';"
echo ""
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
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
echo "⚠️ Pensez à sauvegarder ces informations si vous ne les enregistrez pas."
fi
unset PGPASSWORD
unset POSTGRES_PASSWORD
echo "🎉 Opération terminée."