diff --git a/db/mariadb-10.3.22/Dockerfile b/db/mariadb-10.3.22/Dockerfile
index 2475e5f5a6a927aee241a64e206d4b6c8c6cfd21..1d07492ed72ab44b405ccd5990a6b0593754dbc4 100644
--- a/db/mariadb-10.3.22/Dockerfile
+++ b/db/mariadb-10.3.22/Dockerfile
@@ -1,4 +1,4 @@
-#####
+######
 FROM docker.io/mariadb:10.3.22
 MAINTAINER drupalci
 
diff --git a/db/mariadb-10.3.22/conf/startup.sh b/db/mariadb-10.3.22/conf/startup.sh
index 998cdc0ede0e481fd32ac02a23b4fa5dcdc323c5..75443109323259d4e262cb9d7c00b55344e4278b 100755
--- a/db/mariadb-10.3.22/conf/startup.sh
+++ b/db/mariadb-10.3.22/conf/startup.sh
@@ -1,5 +1,17 @@
 #!/bin/bash
 
+terminate() {
+    echo "Caught termination signal, shutting down..."
+    if [ -n "${PID}" ]; then
+        kill -TERM "$(pgrep -P ${PID} -x mysqld)"
+        wait "${PID}"
+    fi
+    echo "Shutdown complete."
+    exit 0
+}
+
+trap terminate SIGTERM SIGINT
+
 if [ ! -f /var/lib/mysql/ibdata1 ];
     then
     echo "rebuilding /var/lib/mysql/ibdata1"
@@ -12,10 +24,12 @@ if [ ! -f /var/lib/mysql/ibdata1 ];
     mysql -e "CREATE USER 'drupaltestbot'@'%' IDENTIFIED BY 'drupaltestbotpw';"
     mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'drupaltestbot'@'%' WITH GRANT OPTION; SELECT User FROM mysql.user; FLUSH PRIVILEGES;"
     echo "Grants added"
-    killall mysqld
-    wait ${PID}
 fi
 
-/usr/bin/mysqld_safe;
-echo "mysql died at $(date)";
-
+# Start MySQL server if container restart and data is ready
+if [ -z "${PID}" ]; then
+    /usr/bin/mysqld_safe &
+    PID="${!}"
+fi
+wait ${PID}
+echo "mysql exited at $(date)";
diff --git a/db/mariadb-10.6/Dockerfile b/db/mariadb-10.6/Dockerfile
index 9a9c9ac11091f18b55222ee85f28279ee1d386f4..88c467e4f070dbac8ff4679107024b6fe0560567 100644
--- a/db/mariadb-10.6/Dockerfile
+++ b/db/mariadb-10.6/Dockerfile
@@ -1,4 +1,4 @@
-####
+#####
 FROM docker.io/mariadb:10.6
 MAINTAINER drupalci
 
diff --git a/db/mariadb-10.6/conf/startup.sh b/db/mariadb-10.6/conf/startup.sh
index 998cdc0ede0e481fd32ac02a23b4fa5dcdc323c5..b3ccd0b52ffcf21d6756458eba400bf79252664b 100755
--- a/db/mariadb-10.6/conf/startup.sh
+++ b/db/mariadb-10.6/conf/startup.sh
@@ -1,5 +1,17 @@
 #!/bin/bash
 
+terminate() {
+    echo "Caught termination signal, shutting down..."
+    if [ -n "${PID}" ]; then
+        kill -TERM "$(pgrep -P ${PID} -x mariadbd)"
+        wait "${PID}"
+    fi
+    echo "Shutdown complete."
+    exit 0
+}
+
+trap terminate SIGTERM SIGINT
+
 if [ ! -f /var/lib/mysql/ibdata1 ];
     then
     echo "rebuilding /var/lib/mysql/ibdata1"
@@ -12,10 +24,12 @@ if [ ! -f /var/lib/mysql/ibdata1 ];
     mysql -e "CREATE USER 'drupaltestbot'@'%' IDENTIFIED BY 'drupaltestbotpw';"
     mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'drupaltestbot'@'%' WITH GRANT OPTION; SELECT User FROM mysql.user; FLUSH PRIVILEGES;"
     echo "Grants added"
-    killall mysqld
-    wait ${PID}
 fi
 
-/usr/bin/mysqld_safe;
-echo "mysql died at $(date)";
-
+# Start MySQL server if container restart and data is ready
+if [ -z "${PID}" ]; then
+    /usr/bin/mysqld_safe &
+    PID="${!}"
+fi
+wait ${PID}
+echo "mysql exited at $(date)";