- Вопрос или проблема
- Метод mysqld_safe (бинарный/скрипт оболочки) определенно больше не является частью пакета MySQL 8 (8.0.36) в Red Hat 8 и, возможно, других дистрибутивах Linux.
- Ответ или решение
- Как установить пароль для пользователя root в MySQL на RHEL 8?
- Причины проблемы
- Шаги по установке пароля для root
- Альтернативная схема аутентификации
- Заключение
Вопрос или проблема
На абсолютно новой установке 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 простых шагах! Поехали!
- Остановите
mysqld
и перезапустите его с правильнымMYSQLD_OPTS
:sudo service mysqld stop; sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"; sudo service mysqld start;
- После того как MySQL запустится, выполните вход в MySQL как
root
без пароля:mysql -u root;
- Теперь в 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;
не представляет никакого риска или опасности. - Теперь верните
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
-
Остановка MySQL-сервера
Вам необходимо сначала остановить работающий MySQL сервер. Откройте терминал и выполните команду:sudo systemctl stop mysqld
-
Запуск MySQL с параметрами
--skip-grant-tables
После остановки MySQL, выполните следующую команду для запуска MySQL с необходимыми опциями:sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking" sudo systemctl start mysqld
Эти параметры отключают проверку привилегий и сетевое соединение, что позволяет вам войти в систему без пароля.
-
Вход в MySQL
Теперь вы можете войти в MySQL без пароля:mysql -u root
-
Установка нового пароля
После входа выполните следующие команды в MySQL для установки нового пароля. Замените[password]
на желаемый пароль:FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '[password]'; FLUSH PRIVILEGES; exit;
Эти команды сбрасывают привилегии, изменяют пароль и выходят из MySQL.
-
Возвращение настроек MySQL
Теперь необходимо вернуть старые настройки и перезапустить MySQL. Выполните следующие команды:sudo systemctl stop mysqld sudo systemctl unset-environment MYSQLD_OPTS sudo systemctl start mysqld
-
Проверка нового пароля
Теперь вы можете протестировать новый пароль, выполнив следующую команду: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 сервер запущен, и вы используете правильные команды для аутентификации.