diff -Nuar a/setup/src/Magento/Setup/Model/Installer.php b/setup/src/Magento/Setup/Model/Installer.php
--- a/setup/src/Magento/Setup/Model/Installer.php
+++ b/setup/src/Magento/Setup/Model/Installer.php
@@ -316,7 +316,9 @@ class Installer
                 [$request[InstallCommand::INPUT_KEY_SALES_ORDER_INCREMENT_PREFIX]],
             ];
         }
-        $script[] = ['Installing admin user...', 'installAdminUser', [$request]];
+        if ($this->isAdminDataSet($request)) {
+            $script[] = ['Installing admin user...', 'installAdminUser', [$request]];
+        }
         $script[] = ['Caches clearing:', 'cleanCaches', []];
         $script[] = ['Disabling Maintenance Mode:', 'setMaintenanceMode', [0]];
         $script[] = ['Post installation file permissions check...', 'checkApplicationFilePermissions', []];
@@ -1318,4 +1320,27 @@ class Installer
             $this->log->log($message);
         }
     }
+
+    /**
+     * Checks that admin data is not empty in request array
+     *
+     * @param \ArrayObject|array $request
+     * @return bool
+     */
+    private function isAdminDataSet($request)
+    {
+        $adminData = array_filter($request, function ($value, $key) {
+            return in_array(
+                $key,
+                [
+                    AdminAccount::KEY_EMAIL,
+                    AdminAccount::KEY_FIRST_NAME,
+                    AdminAccount::KEY_LAST_NAME,
+                    AdminAccount::KEY_USER,
+                    AdminAccount::KEY_PASSWORD,
+                ]
+            ) && $value !== null;
+        }, ARRAY_FILTER_USE_BOTH);
+        return !empty($adminData);
+    }
 }

diff -Nuar a/setup/src/Magento/Setup/Console/Command/InstallCommand.php b/setup/src/Magento/Setup/Console/Command/InstallCommand.php
--- a/setup/src/Magento/Setup/Console/Command/InstallCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/InstallCommand.php
@@ -11,6 +11,7 @@ use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 use Magento\Setup\Model\InstallerFactory;
 use Magento\Framework\Setup\ConsoleLogger;
+use Magento\Setup\Model\AdminAccount;
 use Symfony\Component\Console\Input\InputOption;
 use Magento\Setup\Model\ConfigModel;
 use Symfony\Component\Console\Question\Question;
@@ -103,7 +104,7 @@ class InstallCommand extends AbstractSetupCommand
     {
         $inputOptions = $this->configModel->getAvailableOptions();
         $inputOptions = array_merge($inputOptions, $this->userConfig->getOptionsList());
-        $inputOptions = array_merge($inputOptions, $this->adminUser->getOptionsList());
+        $inputOptions = array_merge($inputOptions, $this->adminUser->getOptionsList(InputOption::VALUE_OPTIONAL));
         $inputOptions = array_merge($inputOptions, [
             new InputOption(
                 self::INPUT_KEY_CLEANUP_DB,
@@ -178,7 +179,7 @@ class InstallCommand extends AbstractSetupCommand
         }

         $errors = $this->configModel->validate($configOptionsToValidate);
-        $errors = array_merge($errors, $this->adminUser->validate($input));
+        $errors = array_merge($errors, $this->validateAdmin($input));
         $errors = array_merge($errors, $this->validate($input));
         $errors = array_merge($errors, $this->userConfig->validate($input));

@@ -247,7 +248,7 @@ class InstallCommand extends AbstractSetupCommand

         $output->writeln("");

-        foreach ($this->adminUser->getOptionsList() as $option) {
+        foreach ($this->adminUser->getOptionsList(InputOption::VALUE_OPTIONAL) as $option) {
             $configOptionsToValidate[$option->getName()] = $this->askQuestion(
                 $input,
                 $output,
@@ -338,4 +339,23 @@ class InstallCommand extends AbstractSetupCommand

         return $value;
     }
+
+    /**
+     * Performs validation of admin options if at least one of them was set.
+     *
+     * @param InputInterface $input
+     * @return array
+     */
+    private function validateAdmin(InputInterface $input): array
+    {
+        if ($input->getOption(AdminAccount::KEY_FIRST_NAME)
+            || $input->getOption(AdminAccount::KEY_LAST_NAME)
+            || $input->getOption(AdminAccount::KEY_EMAIL)
+            || $input->getOption(AdminAccount::KEY_USER)
+            || $input->getOption(AdminAccount::KEY_PASSWORD)
+        ) {
+            return $this->adminUser->validate($input);
+        }
+        return [];
+    }
 }

diff -Nuar a/setup/src/Magento/Setup/Console/Command/AdminUserCreateCommand.php b/setup/src/Magento/Setup/Console/Command/AdminUserCreateCommand.php
--- a/setup/src/Magento/Setup/Console/Command/AdminUserCreateCommand.php
+++ b/setup/src/Magento/Setup/Console/Command/AdminUserCreateCommand.php
@@ -15,6 +15,9 @@ use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Question\Question;

+/**
+ * Command to create an admin user.
+ */
 class AdminUserCreateCommand extends AbstractSetupCommand
 {
     /**
@@ -52,6 +55,8 @@ class AdminUserCreateCommand extends AbstractSetupCommand
     }

     /**
+     * Creation admin user in interaction mode.
+     *
      * @param \Symfony\Component\Console\Input\InputInterface $input
      * @param \Symfony\Component\Console\Output\OutputInterface $output
      *
@@ -129,6 +134,8 @@ class AdminUserCreateCommand extends AbstractSetupCommand
     }

     /**
+     * Add not empty validator.
+     *
      * @param \Symfony\Component\Console\Question\Question $question
      * @return void
      */
@@ -144,7 +151,7 @@ class AdminUserCreateCommand extends AbstractSetupCommand
     }

     /**
-     * {@inheritdoc}
+     * @inheritdoc
      */
     protected function execute(InputInterface $input, OutputInterface $output)
     {
@@ -165,25 +172,43 @@ class AdminUserCreateCommand extends AbstractSetupCommand
     /**
      * Get list of arguments for the command
      *
+     * @param int $mode The mode of options.
      * @return InputOption[]
      */
-    public function getOptionsList()
+    public function getOptionsList($mode = InputOption::VALUE_REQUIRED)
     {
+        $requiredStr = ($mode === InputOption::VALUE_REQUIRED ? '(Required) ' : '');
+
         return [
-            new InputOption(AdminAccount::KEY_USER, null, InputOption::VALUE_REQUIRED, '(Required) Admin user'),
-            new InputOption(AdminAccount::KEY_PASSWORD, null, InputOption::VALUE_REQUIRED, '(Required) Admin password'),
-            new InputOption(AdminAccount::KEY_EMAIL, null, InputOption::VALUE_REQUIRED, '(Required) Admin email'),
+            new InputOption(
+                AdminAccount::KEY_USER,
+                null,
+                $mode,
+                $requiredStr . 'Admin user'
+            ),
+            new InputOption(
+                AdminAccount::KEY_PASSWORD,
+                null,
+                $mode,
+                $requiredStr . 'Admin password'
+            ),
+            new InputOption(
+                AdminAccount::KEY_EMAIL,
+                null,
+                $mode,
+                $requiredStr . 'Admin email'
+            ),
             new InputOption(
                 AdminAccount::KEY_FIRST_NAME,
                 null,
-                InputOption::VALUE_REQUIRED,
-                '(Required) Admin first name'
+                $mode,
+                $requiredStr . 'Admin first name'
             ),
             new InputOption(
                 AdminAccount::KEY_LAST_NAME,
                 null,
-                InputOption::VALUE_REQUIRED,
-                '(Required) Admin last name'
+                $mode,
+                $requiredStr . 'Admin last name'
             ),
         ];
     }
