«mysql_secure_installation» запрашивает пароль root в Red Hat Enterprise Linux 8, но пароль не установлен. Что делать?

Вопрос или проблема

На абсолютно новой установке mysql на RHEL 8 меня ни разу не попросили установить пароль для пользователя root. Когда я запускаю mysql_secure_installation, он запрашивает пароль для пользователя root. У меня нет этого пароля, и оставлять его пустым тоже не сработало.

Я сначала проверил этот вопрос, но он, похоже, не решает мою проблему. Запуск команды с sudo ничего не меняет, и файл /var/log/mysql/mysql.log отсутствует, чтобы проверить временный пароль.

Как я могу установить этот пароль при первоначальной настройке? mysql -u root --skip-password, sudo mysql и использование init файла также все провалились.


Обновление: Этот вопрос имеет решение, которое включает использование init файла, которое, как я уже сказал, провалилось.

“Когда я запускаю mysql_secure_installation, он запрашивает пароль для пользователя root. У меня нет этого пароля, и оставлять его пустым тоже не сработало.”

Это потому, что у вас не установлен пароль для пользователя root. Следуйте этим шагам, чтобы установить пароль для пользователя root с MySQL 8.0

Первое, что нужно знать, это то, что более старая методика mysqld_safe больше не работает… Подробности ниже.

Метод mysqld_safe (бинарный/скрипт оболочки) определенно больше не является частью пакета MySQL 8 (8.0.36) в Red Hat 8 и, возможно, других дистрибутивах Linux.

Согласно этому другому ответу на Stack Overflow, это может быть удалено (как бинарный/скрипт оболочки) из установки MySQL на системах, управляемых systemd, начиная как минимум с MySQL 5.7.6:

“Начиная с MySQL 5.7.6, для установки MySQL с использованием RPM-дистрибутива запуск и завершение работы сервера управляется systemd на нескольких платформах Linux. На этих платформах mysqld_safe больше не устанавливается, так как он ненужен. Для получения дополнительной информации смотрите раздел 2.5.10, “Управление сервером MySQL с помощью systemd”.”

Несмотря на причину, если вы получаете это сообщение при попытке запустить mysqld_safe:

mysqld_safe: команда не найдена

И ваша система использует systemd (также: systemctl), то это определенно современный ответ, который решит ваши проблемы в 4 простых шагах! Поехали!

  1. Остановите mysqld и перезапустите его с правильным MYSQLD_OPTS:
    sudo service mysqld stop;
    sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking";
    sudo service mysqld start;
    
  2. После того как MySQL запустится, выполните вход в MySQL как root без пароля:
    mysql -u root;
    
  3. Теперь в MySQL выполните эти команды; обратите внимание, что [password] следует заменить на любой пароль MySQL, который вы хотите установить:
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '[password]';
    FLUSH PRIVILEGES;
    exit;
    

    Обратите внимание, я полагаю, что первый FLUSH PRIVILEGES; связан с запуском MySQL с установленным MYSQLD_OPTS на --skip-grant-tables. В любом случае, выполнение FLUSH PRIVILEGES; не представляет никакого риска или опасности.

  4. Теперь верните MYSQLD_OPTS в исходное состояние и перезапустите MySQL следующим образом:
    sudo service mysqld stop;
    sudo systemctl unset-environment MYSQLD_OPTS;
    sudo service mysqld start;
    

Теперь, когда все сделано, попробуйте войти в MySQL как root с паролем, как это:

mysql -u root -p

Нажмите Enter/Return, затем введите ваш вновь установленный root пароль и… вуаля! Вы должны быть вошли в MySQL как root!


Примечание: Я выбрал установить пароль с помощью плагина аутентификации caching_sha2_password, но если вы хотите быть более современным, вы можете использовать mysql_native_password следующим образом:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[password]';

Ответ или решение

Как установить пароль для пользователя root в MySQL на RHEL 8?

Если на новой установке MySQL на Red Hat Enterprise Linux 8 вы не устанавливали пароль для пользователя root и теперь при попытке запустить mysql_secure_installation он запрашивает пароль, а вы не знаете, что вводить, то вы не одиноки. Это распространенная проблема. В этой статье приведены детальные шаги, которые помогут вам установить пароль для пользователя root в MySQL 8.0.

Причины проблемы

При первом запуске MySQL, особенно начиная с версии 8.0, пароль для пользователя root не устанавливается автоматически. Это сделано для улучшения безопасности, при этом пользователю предлагается установить пароль после установки. Однако, если у вас возникли сложности, вы можете воспользоваться следующими шагами для сброса пароля root.

Шаги по установке пароля для root

  1. Остановка MySQL-сервера
    Вам необходимо сначала остановить работающий MySQL сервер. Откройте терминал и выполните команду:

    sudo systemctl stop mysqld
  2. Запуск MySQL с параметрами --skip-grant-tables
    После остановки MySQL, выполните следующую команду для запуска MySQL с необходимыми опциями:

    sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"
    sudo systemctl start mysqld

    Эти параметры отключают проверку привилегий и сетевое соединение, что позволяет вам войти в систему без пароля.

  3. Вход в MySQL
    Теперь вы можете войти в MySQL без пароля:

    mysql -u root
  4. Установка нового пароля
    После входа выполните следующие команды в MySQL для установки нового пароля. Замените [password] на желаемый пароль:

    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '[password]';
    FLUSH PRIVILEGES;
    exit;

    Эти команды сбрасывают привилегии, изменяют пароль и выходят из MySQL.

  5. Возвращение настроек MySQL
    Теперь необходимо вернуть старые настройки и перезапустить MySQL. Выполните следующие команды:

    sudo systemctl stop mysqld
    sudo systemctl unset-environment MYSQLD_OPTS
    sudo systemctl start mysqld
  6. Проверка нового пароля
    Теперь вы можете протестировать новый пароль, выполнив следующую команду:

    mysql -u root -p

    Введите ваш новый пароль, и вы должны войти в MySQL как пользователь root.

Альтернативная схема аутентификации

Хотя в примере используется аутентификация caching_sha2_password, вы можете рассмотреть возможность использования более старого метода mysql_native_password, выполнив следующую команду:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[password]';

Заключение

Теперь вы знаете, как установить пароль для пользователя root в MySQL на RHEL 8. Применяя данные шаги, вы сможете избежать затруднений при запуске mysql_secure_installation и обеспечить безопасность вашей базы данных. Если у вас возникнут дополнительные проблемы, всегда убедитесь, что MySQL сервер запущен, и вы используете правильные команды для аутентификации.

Оцените материал
Добавить комментарий

Капча загружается...