diff --git a/typo3/sysext/install/Classes/Service/SilentConfigurationUpgradeService.php b/typo3/sysext/install/Classes/Service/SilentConfigurationUpgradeService.php
index 03d8f6e1f5e43ff4d78b58c6b2db57090105921b..4f7a64cbb7a69f6f0375fd088e6aa29ecaaa1e92 100755
--- a/typo3/sysext/install/Classes/Service/SilentConfigurationUpgradeService.php
+++ b/typo3/sysext/install/Classes/Service/SilentConfigurationUpgradeService.php
@@ -106,6 +106,7 @@ class SilentConfigurationUpgradeService
         $this->migrateThumbnailsPngSetting();
         $this->migrateLockSslSetting();
         $this->migrateDatabaseConnectionSettings();
+        $this->migrateDatabaseConnectionCharset();
     }
 
     /**
@@ -660,15 +661,44 @@ class SilentConfigurationUpgradeService
             );
         }
 
-        // Set the utf-8 connection charset by default
-        $confManager->setLocalConfigurationValueByPath('DB/Connections/Default/charset', 'utf-8');
+        // Set the utf-8 connection charset by default if no value has been provided yet
+        try {
+            $confManager->getLocalConfigurationValueByPath('DB/Connections/Default/charset');
+        } catch (\RuntimeException $e) {
+            $confManager->setLocalConfigurationValueByPath('DB/Connections/Default/charset', 'utf8');
+        }
 
-        // Use the mysqli driver by default
-        $confManager->setLocalConfigurationValueByPath('DB/Connections/Default/driver', 'mysqli');
+        // Use the mysqli driver by default if no value has been provided yet
+        try {
+            $confManager->getLocalConfigurationValueByPath('DB/Connections/Default/driver');
+        } catch (\RuntimeException $e) {
+            $confManager->setLocalConfigurationValueByPath('DB/Connections/Default/driver', 'mysqli');
+        }
 
         if (!empty(array_filter($changedSettings))) {
             $confManager->removeLocalConfigurationKeysByPath(array_keys($changedSettings));
             $this->throwRedirectException();
         }
     }
+
+    /**
+     * Migrate the configuration setting DB/Connections/Default/charset to 'utf8' as
+     * 'utf-8' is not supported by all MySQL versions.
+     *
+     * @return void
+     */
+    protected function migrateDatabaseConnectionCharset()
+    {
+        $confManager = $this->configurationManager;
+        try {
+            $driver = $confManager->getLocalConfigurationValueByPath('DB/Connections/Default/driver');
+            $charset = $confManager->getLocalConfigurationValueByPath('DB/Connections/Default/charset');
+            if (in_array($driver, ['mysqli', 'pdo_mysql', 'drizzle_pdo_mysql'], true) && $charset === 'utf-8') {
+                $confManager->setLocalConfigurationValueByPath('DB/Connections/Default/charset', 'utf8');
+                $this->throwRedirectException();
+            }
+        } catch (\RuntimeException $e) {
+            // no incompatible charset configuration found, so nothing needs to be modified
+        }
+    }
 }