13.11.2022

Как «сбросить» root-пароль для MySQL или MariaDB в Ubuntu 20.04

Что такое MySQL и MariaDB

MySQL и MariaDB - очень популярные системы управления базами данных, основанных на языке запросов SQL. Сегодня их используют для веб-сайтов, проектов по машинному обучению, в различных средах разработки и так далее.

Зачем может понадобиться сбрасывать пароль

Причины очевидны - текущий пароль может быть автоматически изменен после обновления пакетов службы базы данных на новую версию, пароль можно случайно забыть, может быть утеряно хранилище личных паролей и т.д.

Как сбросить пароль root для сервисов MySQL и MariaDB

Чтобы установить новый пароль для пользователя root сервиса управления базами данных (ВНИМАНИЕ - это НЕ системный пользователь root!), выполните следующие действия:

Войдите на свой сервер как привилегированный пользователь;

Остановите службу;

service mysql stop # для MySQL
service mariadb stop # для MariaDB

Временно разрешите аутентификацию без пароля и запустите службу:

cat << EOF >> /etc/mysql/my.cnf
[mysqld]
skip-grant-tables
EOF
service mysql start

Авторизуйтесь в системе управления базами данных и установите новый root-пароль:

mysql
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'новый_пароль';
exit

Удалите директиву skip-grant-tables из «системного» конфигурационного файла и перезапустите службу:

service mysql stop; sed -i -e '$d' /etc/mysql/my.cnf && sed -i -e '$d' /etc/mysql/my.cnf; service mysql start

Обратите внимание - я не случайно запустил команду sed -i -e '$d' дважды, а потому, что из конфигурационного файла нужно удалить две последние строки.

Проверка и настройка для более удобного использования в дальнейшем

Чтобы проверить все ли у вас получилось, давайте попробуем авторизоваться в сервисе:

mysql -uroot -p<новый_пароль>

Как видите, авторизация прошла успешно. Чтобы сделать дальнейшее использование сервиса более комфортным, можно сохранить новый пароль в специальный файл в вашем домашнем каталоге. Это позволит вам в дальнейшем не вводить пароль для входа в сервис:

cat << EOF > ~/.my.cnf

[client]
user = root
password = <your_new_password>
EOF

Заключение

Теперь вы знаете, как сбросить root-пароль для сервисов MySQL или MariaDB, знаете зачем может понадобиться эта операция и как сделать дальнейшее использование данного приложения более комфортным.