127 lines
3 KiB
Bash
127 lines
3 KiB
Bash
#!/bin/bash
|
|
|
|
#Variables d'environnement
|
|
DATADIR="/var/lib/mysql" #Emplacement base de données
|
|
TARGET="/home/utilisateur/backups" #Emplacement de la sauvegarde
|
|
UserSavePreload="" #Pour forcer le nom utilisateur à utiliser pour faire les sauvegardes
|
|
UserSavePassPreload="" #Pour forcer le mot de passe de l'utilisateur
|
|
|
|
|
|
|
|
|
|
echo
|
|
echo "Script de sauvegarde base de données mariadb avec MariaBackup"
|
|
echo
|
|
|
|
|
|
# Vérification mariadb-backup est installé.
|
|
MariaBackupVersion=$(command mariabackup -v 2>&1 | grep -E '[0-9]+\.[0-9]')
|
|
|
|
if [ -z "$MariaBackupVersion" ]; then
|
|
echo "ERREUR: mariadb-backup non installé"
|
|
echo
|
|
exit 1
|
|
fi
|
|
|
|
|
|
# Extraction des versions
|
|
BACKUP_VER=$($mariabackup --version 2>&1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)
|
|
MARIADB_VER=$(mariadb --version 2>&1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)
|
|
|
|
|
|
# Comparaison des versions
|
|
if [ "$BACKUP_VER" = "$MARIADB_VER" ]; then
|
|
echo "OK Versions identiques"
|
|
echo
|
|
exit 0
|
|
else
|
|
echo "Attention versions différentes, veuillez installer la version adapté"
|
|
echo
|
|
exit 0
|
|
fi
|
|
|
|
|
|
function SaveDB {
|
|
read -p "Utilisateur ? " UserSave
|
|
read -p "Mot de passe ? "UserSavePass
|
|
UserSave=$UserSavePreload
|
|
UserSavePass=$UserSavePassPreload
|
|
mariabackup --backup --parallel=2 --datadir=$DATADIR --target-dir=$TARGET/full-$(date +%Y%m%d) --user='$UserSave' --password='$UserSavePass'
|
|
}
|
|
|
|
|
|
# Fonction creation utilisateur MariaDB
|
|
function UserCreate {
|
|
read -p "Nouveau nom d'utilisateur MariaDB ? " UserCreateName
|
|
|
|
if [ -z "$UserCreateName" ]; then
|
|
echo "❌ Erreur: Le nom d'utilisateur ne peut pas être vide"
|
|
exit 1
|
|
fi
|
|
|
|
read -sp "Mot de passe ? " UserCreatePassword
|
|
read -sp "Confirmer mot de passe ? " UserCreatePasswordRepeat
|
|
|
|
if [ -z "$UserCreatePassword" ]; then
|
|
echo "❌ Le mot de passe ne peut pas être vide"
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$UserCreatePassword" != "$UserCreatePasswordRepeat" ]; then
|
|
echo "❌ Les mots de passe ne correspondent pas"
|
|
exit 1
|
|
fi
|
|
|
|
echo "🔐 Connexion à MariaDB..."
|
|
|
|
mariadb -u root -p <<EOF
|
|
CREATE USER IF NOT EXISTS '$UserCreateName'@'localhost' IDENTIFIED BY '$UserCreatePassword';
|
|
GRANT RELOAD, PROCESS, LOCK TABLES, BINLOG MONITOR ON *.* TO '$UserCreateName'@'localhost';
|
|
FLUSH PRIVILEGES;
|
|
EOF
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo
|
|
echo "✅ Utilisateur créé avec succès !"
|
|
echo
|
|
echo "📋 Récapitulatif :"
|
|
echo " Utilisateur: '$UserCreateName'@localhost"
|
|
echo " Droits: RELOAD, PROCESS, LOCK TABLES, BINLOG MONITOR"
|
|
else
|
|
echo
|
|
echo "❌ Erreur lors de la création de l'utilisateur"
|
|
echo
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
|
|
function UserList {
|
|
echo
|
|
echo "Liste des utilisateurs de la base de données"
|
|
mariadb -u root -p -e "SELECT User, Host FROM mysql.user"
|
|
echo
|
|
}
|
|
|
|
|
|
# Menu principal
|
|
while true; do
|
|
echo
|
|
echo -e "1 - Sauvegarder une base de données"
|
|
echo -e "2 - Restaurer une base de données"
|
|
echo -e "3 - Créer un utilisateur dédié au sauvegarde"
|
|
echo -e "4 - Exit"
|
|
echo
|
|
read -p "Choisir votre action ? " choice
|
|
echo
|
|
|
|
case "$choice" in
|
|
1) SaveDB ;;
|
|
2) RestoreDB ;;
|
|
3) UserCreate ;;
|
|
4) UserList ;;
|
|
5) exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
|