diff --git a/scripts/.directories.txt b/scripts/.directories.txt
index f913cea..e5ea4a0 100644
--- a/scripts/.directories.txt
+++ b/scripts/.directories.txt
@@ -2,3 +2,4 @@ common
 server-dhcp
 server-httpd
 server-mail
+server-mariadb
diff --git a/scripts/common/common_utils.sh b/scripts/common/common_utils.sh
index 4706acd..4fde7a2 100644
--- a/scripts/common/common_utils.sh
+++ b/scripts/common/common_utils.sh
@@ -9,6 +9,11 @@ check_root() {
     fi
 }
 
+generate_token() {
+    tr -dc 'A-Za-z0-9@#%+=_-' < /dev/urandom | head -c "${1:-32}"
+    echo
+}
+
 update_system() {
     echo "=== Mise à jour du système ==="
     
diff --git a/scripts/server-mariadb/.list_files.txt b/scripts/server-mariadb/.list_files.txt
new file mode 100644
index 0000000..1f5f76d
--- /dev/null
+++ b/scripts/server-mariadb/.list_files.txt
@@ -0,0 +1,2 @@
+create_db.sh
+setup_mariadb.sh
diff --git a/scripts/server-mariadb/create_db.sh b/scripts/server-mariadb/create_db.sh
new file mode 100644
index 0000000..c4f7bc8
--- /dev/null
+++ b/scripts/server-mariadb/create_db.sh
@@ -0,0 +1,151 @@
+#!/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
+
+echo "=== Gestion du mot de passe administrateur ==="
+
+# Vérifier la présence de la commande mysql
+if ! command -v mysql >/dev/null 2>&1; then
+    echo "❌ La commande 'mysql' est introuvable. Veuillez l'installer."
+    exit 1
+fi
+
+# Fonction de recherche dans un fichier cnf ou conf
+get_password_from_cnf() {
+    local file=$1
+    if [[ -f "$file" ]]; then
+        PASSWORD=$(grep -m1 'password\s*=' "$file" | sed -E 's/.*password\s*=\s*//;s/"//g')
+        if [[ -n "$PASSWORD" ]]; then
+            echo "$PASSWORD"
+            return 0
+        fi
+    fi
+    return 1
+}
+
+# Tentative de récupération depuis /etc/mysql/debian.cnf
+DB_ROOT_PASSWORD=$(get_password_from_cnf "/etc/mysql/debian.cnf")
+if [[ -n "$DB_ROOT_PASSWORD" ]]; then
+    echo "✅ Mot de passe root récupéré depuis /etc/mysql/debian.cnf"
+else
+    # Recherche dans d'autres fichiers .cnf ou .conf
+    for file in /etc/mysql/*.cnf /etc/mysql/conf.d/*.cnf /etc/my.cnf /etc/my.cnf.d/*.cnf; do
+        DB_ROOT_PASSWORD=$(get_password_from_cnf "$file")
+        if [[ -n "$DB_ROOT_PASSWORD" ]]; then
+            echo "✅ Mot de passe root trouvé dans $file"
+            break
+        fi
+    done
+fi
+
+# Si toujours rien, demande à l'utilisateur
+if [[ -z "$DB_ROOT_PASSWORD" ]]; then
+    echo -n "🔐 Entrez le mot de passe root pour MariaDB : "
+    read -r -s USER_PASSWORD
+    echo
+    DB_ROOT_PASSWORD="$USER_PASSWORD"
+fi
+
+# Création d'un fichier temporaire sécurisé pour la connexion MySQL
+TEMP_CNF=$(mktemp)
+chmod 600 "$TEMP_CNF"
+cat > "$TEMP_CNF" <<EOF
+[client]
+user=root
+password=$DB_ROOT_PASSWORD
+EOF
+
+# TEST du mot de passe root
+echo "🔎 Test de connexion avec le mot de passe root..."
+if ! mysql --defaults-extra-file="$TEMP_CNF" -e "SELECT 1;" 2>/dev/null; then
+    echo "❌ Échec de la connexion avec le mot de passe root. Arrêt du script."
+    rm -f "$TEMP_CNF"
+    exit 1
+fi
+echo "✅ Connexion root réussie."
+
+echo "=== Création d'une nouvelle base de données MariaDB ==="
+
+# Lecture du nom de la base de données
+read -rp "Nom de la base de données : " DB_NAME
+if [[ -z "$DB_NAME" ]]; then
+    echo "❌ Nom de base de données requis."
+    rm -f "$TEMP_CNF"
+    exit 1
+fi
+
+# Vérification de l'existence de la base de données
+DB_EXISTS=$(mysql --defaults-extra-file="$TEMP_CNF" -sse "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='$DB_NAME'")
+if [[ "$DB_EXISTS" == "$DB_NAME" ]]; then
+    echo "❌ La base de données '$DB_NAME' existe déjà."
+    rm -f "$TEMP_CNF"
+    exit 1
+fi
+
+# Lecture du nom de l'utilisateur
+read -rp "Nom de l'utilisateur : " DB_USER
+if [[ -z "$DB_USER" ]]; then
+    echo "❌ Nom d'utilisateur requis."
+    rm -f "$TEMP_CNF"
+    exit 1
+fi
+
+# Vérification de l'existence de l'utilisateur
+USER_EXISTS=$(mysql --defaults-extra-file="$TEMP_CNF" -sse "SELECT COUNT(*) FROM mysql.user WHERE user='$DB_USER'")
+if [[ "$USER_EXISTS" -gt 0 ]]; then
+    echo "ℹ️ L'utilisateur '$DB_USER' existe déjà. Il ne sera pas recréé."
+    CREATE_USER_SQL=""
+    USER_PASS_TO_SAVE=""
+else
+    echo "✅ L'utilisateur '$DB_USER' sera créé."
+    # Demande du mot de passe utilisateur ou génération
+    read -rsp "Mot de passe de l'utilisateur (laisser vide pour générer) : " DB_PASS
+    echo
+    if [[ -z "$DB_PASS" ]]; then
+        DB_PASS=$(generate_token 64)
+        echo "🔑 Mot de passe généré : $DB_PASS"
+    fi
+    CREATE_USER_SQL="CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
+    USER_PASS_TO_SAVE="$DB_PASS"
+fi
+
+# Création de la base et attribution des droits
+SQL=$(cat <<EOF
+CREATE DATABASE \`$DB_NAME\` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
+$CREATE_USER_SQL
+GRANT ALL PRIVILEGES ON \`$DB_NAME\`.* TO '$DB_USER'@'localhost';
+FLUSH PRIVILEGES;
+EOF
+)
+
+echo "✅ Exécution de la création..."
+if mysql --defaults-extra-file="$TEMP_CNF" -e "$SQL"; then
+    echo "🎉 Base de données '$DB_NAME' créée et droits attribués à '$DB_USER'."
+else
+    echo "❌ Erreur lors de la création."
+    rm -f "$TEMP_CNF"
+    exit 1
+fi
+
+# Sauvegarde des identifiants
+if [[ -n "$USER_PASS_TO_SAVE" ]]; then
+  TIMESTAMP=$(date +%Y%m%d%H%M%S)
+  CRED_FILE="db_${DB_NAME}_${TIMESTAMP}.credentials"
+
+  umask 077  # Restriction immédiate des droits sur le fichier
+  {
+    printf "Base: %s\n" "$DB_NAME"
+    printf "User: %s\n" "$DB_USER"
+    printf "Password: %s\n" "$USER_PASS_TO_SAVE"
+  } > "$CRED_FILE"
+
+  echo "🔒 Identifiants sauvegardés dans $CRED_FILE"
+fi
+
+# Nettoyage du fichier temporaire de connexion
+rm -f "$TEMP_CNF"
diff --git a/scripts/server-mariadb/setup_mariadb.sh b/scripts/server-mariadb/setup_mariadb.sh
new file mode 100644
index 0000000..c7d3dea
--- /dev/null
+++ b/scripts/server-mariadb/setup_mariadb.sh
@@ -0,0 +1,164 @@
+#!/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
+
+# Mise à jour du système
+update_system
+
+PASS_FILE=~/mariadb_root_password.txt
+DEBIAN_CNF=/etc/mysql/debian.cnf
+MARIADB_CNF=/etc/mysql/mariadb.conf.d/50-server.cnf
+
+echo "=== Installation de MariaDB ==="
+apt install -y mariadb-server mariadb-client
+
+echo "=== Activation et démarrage de MariaDB ==="
+systemctl enable mariadb
+systemctl start mariadb
+
+echo "=== Configuration du bind-address pour bloquer les connexions externes ==="
+if grep -q "^bind-address" $MARIADB_CNF; then
+    sed -i 's/^bind-address.*/bind-address = 127.0.0.1/' $MARIADB_CNF
+else
+    echo "bind-address = 127.0.0.1" >> $MARIADB_CNF
+fi
+
+echo "=== Activation du log binaire et purge automatique des anciens logs ==="
+if ! grep -q "^log-bin" "$MARIADB_CNF"; then
+    cat >> "$MARIADB_CNF" <<EOL
+
+# Journalisation binaire activée pour la réplication et la sécurité
+log-bin = /var/log/mysql/mariadb-bin
+expire_logs_days = 7
+EOL
+fi
+
+echo "=== Vérification et création du répertoire pour les binlogs ==="
+mkdir -p /var/log/mysql
+chown mysql:mysql /var/log/mysql
+chmod 750 /var/log/mysql
+
+
+systemctl restart mariadb
+
+echo "=== Gestion du mot de passe administrateur ==="
+
+# Fonction de recherche dans un fichier cnf ou conf
+get_password_from_cnf() {
+    local file=$1
+    if [[ -f "$file" ]]; then
+        PASSWORD=$(grep -m1 'password\s*=' "$file" | sed -E 's/.*password\s*=\s*//;s/"//g')
+        if [[ -n "$PASSWORD" ]]; then
+            echo "$PASSWORD"
+            return 0
+        fi
+    fi
+    return 1
+}
+
+# Générer ou récupérer le mot de passe root MariaDB
+if [[ -f "$PASS_FILE" ]]; then
+    DB_ROOT_PASSWORD=$(grep 'root password:' "$PASS_FILE" | awk '{print $3}')
+    echo "Mot de passe root existant récupéré."
+else
+    # Tentative de récupération depuis /etc/mysql/debian.cnf
+    DB_ROOT_PASSWORD=$(get_password_from_cnf "/etc/mysql/debian.cnf")
+    if [[ -n "$DB_ROOT_PASSWORD" ]]; then
+        echo "Mot de passe root récupéré depuis /etc/mysql/debian.cnf"
+    else
+        # Tentative dans d'autres fichiers .cnf ou .conf connus
+        for file in /etc/mysql/*.cnf /etc/mysql/conf.d/*.cnf /etc/my.cnf /etc/my.cnf.d/*.cnf; do
+            DB_ROOT_PASSWORD=$(get_password_from_cnf "$file")
+            if [[ -n "$DB_ROOT_PASSWORD" ]]; then
+                echo "Mot de passe root trouvé dans $file"
+                break
+            fi
+        done
+    fi
+
+    # Si toujours pas de mot de passe trouvé, demander ou générer
+    if [[ -z "$DB_ROOT_PASSWORD" ]]; then
+        echo -n "Entrez un mot de passe root pour MariaDB ou le mot de passe existant (laisser vide pour générer automatiquement) : "
+        read -r -s USER_PASSWORD
+        echo
+        if [[ -n "$USER_PASSWORD" ]]; then
+            DB_ROOT_PASSWORD="$USER_PASSWORD"
+            echo "Mot de passe root défini par l'utilisateur."
+        else
+            DB_ROOT_PASSWORD=$(generate_token 64)
+            echo "Mot de passe root généré automatiquement."
+            echo "root password: $DB_ROOT_PASSWORD" > "$PASS_FILE"
+            chmod 600 "$PASS_FILE"
+            echo "Mot de passe root sauvegardé dans $PASS_FILE."
+        fi
+    fi
+
+fi
+
+
+echo "=== Sécurisation de MariaDB ==="
+mysql -u root -p"$DB_ROOT_PASSWORD" <<EOF
+-- Définir le mot de passe root correctement
+ALTER USER 'root'@'localhost' IDENTIFIED BY '$DB_ROOT_PASSWORD';
+
+-- Supprimer les utilisateurs anonymes
+DELETE FROM mysql.user WHERE User='';
+
+-- Supprimer tout accès root externe ou d'autres users externes
+DELETE FROM mysql.user WHERE Host NOT IN ('localhost', '127.0.0.1', '::1');
+
+-- Supprimer la base de test si elle existe
+DROP DATABASE IF EXISTS test;
+
+-- Supprimer les droits sur la base de test
+DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
+
+-- Recharger les privilèges
+FLUSH PRIVILEGES;
+EOF
+
+echo "=== Mise à jour de /etc/mysql/debian.cnf pour les scripts de maintenance ==="
+cat > /etc/mysql/debian.cnf <<EOL
+[client]
+host     = localhost
+user     = root
+password = $DB_ROOT_PASSWORD
+socket   = /run/mysqld/mysqld.sock
+
+[mysql_upgrade]
+host     = localhost
+user     = root
+password = $DB_ROOT_PASSWORD
+socket   = /run/mysqld/mysqld.sock
+EOL
+chmod 600 /etc/mysql/debian.cnf
+
+echo "=== Vérification de la présence de PHP ==="
+if command -v php >/dev/null 2>&1; then
+    PHP_VERSION=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')
+    echo "PHP version détectée : $PHP_VERSION"
+
+    echo "=== Installation de php-mysql pour PHP $PHP_VERSION ==="
+    apt install -y php${PHP_VERSION}-mysql
+
+    echo "=== Redémarrage d'Apache si installé ==="
+    if systemctl list-units --type=service | grep -q apache2; then
+        systemctl restart apache2
+        echo "Apache redémarré"
+    fi
+
+    echo "=== Redémarrage de PHP-FPM si installé ==="
+    if systemctl list-units --type=service | grep -q php${PHP_VERSION}-fpm; then
+        systemctl restart php${PHP_VERSION}-fpm
+        echo "PHP-FPM redémarré"
+    fi
+else
+    echo "PHP n'est pas installé. Installation de MariaDB terminée sans liaison PHP."
+fi
+
+echo "=== Fin de l'installation et sécurisation de MariaDB ==="