В данной статье мы рассмотрим, как сбросить пароль root от MySQL или MariaDB при его утере или забытости. Не паникуйте, у нас есть решение. Для этого потребуется доступ к серверу и учетная запись с правами root на операционной системе. Это руководство проверено на операционной системе Ubuntu 20.04 для обеих популярных СУБД – MySQL и MariaDB.
Table of contents [Show]
Проверка конфигурации Ubuntu 20.04
Перед началом убедитесь, что конфигурация аутентификации по умолчанию не была изменена. Запустите команду sudo mysql
и, если возникает ошибка "access denied", следуйте инструкциям в этой статье.
Шаг 1 – Определение версии и остановка сервера базы данных
1.1. Определите версию СУБД:
mysql --version
1.2. Остановите сервер базы данных в зависимости от используемой СУБД:
Для MariaDB:
sudo systemctl stop mariadb
Для MySQL:
sudo systemctl stop mysql
Шаг 2 – Перезапуск сервера в режиме –skip-grant-tables
2.1. Настройка для MariaDB:
sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"
sudo systemctl start mariadb
sudo systemctl status mariadb
sudo mysql -u root
2.2. Настройка для MySQL:
sudo systemctl edit mysql
Добавьте следующие строки:
[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking
Сохраните изменения нажав CTRL + X, перезагрузите systemd и запустите MySQL:
sudo systemctl daemon-reload
sudo systemctl start mysql
sudo mysql -u root
Шаг 3 – Изменение пароля root
Находясь в режиме –skip-grant-tables, выполните следующие шаги:
Для MariaDB:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'новый_пароль';
UPDATE mysql.user SET authentication_string = '' WHERE user = 'root';
UPDATE mysql.user SET plugin = '' WHERE user = 'root';
Для MySQL:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'новый_пароль';
Шаг 4 – Запуск сервера в штатном режиме
4.1. Для MariaDB:
sudo systemctl unset-environment MYSQLD_OPTS
sudo systemctl restart mariadb
4.2. Для MySQL:
sudo systemctl revert mysql
sudo systemctl daemon-reload
sudo systemctl restart mysql
Проверьте подключение с новым паролем:
mysql -u root -p
Успешного восстановления! Не забывайте свои пароли=)