diff --git a/core/lib/Drupal/Core/Database/Install/Tasks.php b/core/lib/Drupal/Core/Database/Install/Tasks.php
index 04993bd0f1c53987d87a713517c52307eea76fed..929dde86c6b73ed8d4470ddd096cf263ebccb3bd 100644
--- a/core/lib/Drupal/Core/Database/Install/Tasks.php
+++ b/core/lib/Drupal/Core/Database/Install/Tasks.php
@@ -215,6 +215,7 @@ public function getFormOptions($database) {
       '#title' => t('Database name'),
       '#default_value' => empty($database['database']) ? '' : $database['database'],
       '#size' => 45,
+      '#required' => TRUE,
       '#description' => t('The name of the database your @drupal data will be stored in.', array('@drupal' => drupal_install_profile_distribution_name())),
       '#states' => array(
         'required' => array(
@@ -228,6 +229,7 @@ public function getFormOptions($database) {
       '#title' => t('Database username'),
       '#default_value' => empty($database['username']) ? '' : $database['username'],
       '#size' => 45,
+      '#required' => TRUE,
       '#states' => array(
         'required' => array(
           ':input[name=driver]' => array('value' => $this->pdoDriver),
diff --git a/core/misc/states.js b/core/misc/states.js
index 81f4fcf12e86fb35f1c5f0c5fd968f954e1f5541..30a49dc549260749884aaeca46e91bd753611ac4 100644
--- a/core/misc/states.js
+++ b/core/misc/states.js
@@ -517,7 +517,11 @@ $(document).bind('state:disabled', function(e) {
 $(document).bind('state:required', function(e) {
   if (e.trigger) {
     if (e.value) {
-      $(e.target).attr({ 'required': 'required', 'aria-required': 'aria-required' }).closest('.form-item, .form-wrapper').find('label').append(Drupal.theme('requiredMarker'));
+      var $label = $(e.target).attr({ 'required': 'required', 'aria-required': 'aria-required' }).closest('.form-item, .form-wrapper').find('label');
+      // Avoids duplicate required markers on initialization.
+      if (!$label.find('.form-required').length) {
+        $label.append(Drupal.theme('requiredMarker'));
+      }
     }
     else {
       $(e.target).removeAttr('required aria-required').closest('.form-item, .form-wrapper').find('label .form-required').remove();