65 lines
2.0 KiB
Bash
Executable File
65 lines
2.0 KiB
Bash
Executable File
#!/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 n’est 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."
|