MySQL является одной из самых популярных систем управления базами данных. Однако иногда администраторы сталкиваются с проблемой восстановления пароля root из-за его утери или истечения срока действия. В этой статье мы подробно разберем несколько способов сброса пароля root в MySQL как для Ubuntu, так и для CentOS.
Прежде чем приступить непосредственно к смене пароля, необходимо выполнить ряд подготовительных операций.
Проверка текущей версии MySQL или MariaDB
В зависимости от установленной версии сервера базы данных, могут использоваться разные команды для сброса пароля root. Давайте проверим текущую версию:
mysql --version
В ответе будет указана информация о версии сервера. Например, для MySQL:
mysql Ver 8.0.11 for Linux on x86_64 (MySQL Community Server - GPL)
А для MariaDB:
mariadb Ver 15.1 Distrib 10.1.37-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Остановка сервиса базы данных
Перед внесением изменений в настройки безопасности MySQL, необходимо остановить сервис для предотвращения конфликтов при одновременном доступе.
В Ubuntu выполняем:
sudo systemctl stop mysql
В CentOS используем:
sudo systemctl stop mariadb
Запуск MySQL без проверки прав доступа
Чтобы сбросить пароль root, нужно запустить сервер базы данных в специальном режиме без проверки прав доступа пользователей. Это можно сделать двумя способами.
1. Запуск с параметром --skip-grant-tables
Первый способ - добавить опцию --skip-grant-tables. Тогда сервер MySQL не будет загружать таблицы привилегий при старте:
sudo mysqld --skip-grant-tables &
2. Использование опции --init-file
Второй подход заключается в создании специального SQL-файла, который будет выполнен сразу после запуска сервера. Это позволит сбросить пароль непосредственно при старте MySQL.
Синтаксис выглядит так:
sudo mysqld --init-file=/path/to/myfile.sql &
Подключение к консоли MySQL от имени root
Теперь, когда сервер базы данных запущен в режиме без проверки прав доступа, можно подключиться к нему от имени пользователя root без необходимости ввода пароля:
mysql -u root
После этого мы попадаем в консоль MySQL и уже можем выполнить команду по сбросу пароля.
Непосредственный сброс пароля root в MySQL
Рассмотрим разные способы непосредственной смены пароля root в зависимости от версии MySQL или MariaDB.
1. Сброс через команду ALTER USER
В MySQL версии 5.7.6 и выше, а также в MariaDB версии 10.1.20 и выше для изменения паролей используется удобная команда ALTER USER. Давайте разберем работу с ней.
2. Перезагрузка привилегий и смена пароля
Сначала нужно перечитать права доступа командой FLUSH PRIVILEGES:
FLUSH PRIVILEGES;
Затем можно непосредственно сбросить пароль, указав новое значение:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'mynewpassword';
Примеры запуска команды ALTER в MySQL и MariaDB
Рассмотрим конкретные примеры выполнения ALTER USER
в MySQL 8.0:
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass1234';
А также в MariaDB 15:
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'StR0ngP@ssw0rd';
В более старых версиях MySQL и MariaDB используется другой подход с помощью конструкции UPDATE...SET.
Синтаксис команды UPDATE для смены пароля
Синтаксис выглядит следующим образом:
UPDATE mysql.user SET password = PASSWORD('новый_пароль') WHERE user = 'root';
То есть мы обновляем запись в таблице mysql.user для пользователя root.
Использование утилиты mysqladmin
Еще один удобный инструмент для управления MySQL - это утилита mysqladmin. Она также позволяет сбрасывать пароль root.
Для смены пароля используется ключ -p
:
mysqladmin -u root -p password 'новый_пароль'
Где вместо 'новый_пароль' нужно указать желаемое значение.
Например, выполним сброс пароля root для MariaDB:
mysqladmin -u root -p password 'Str0ngP@ssword'
MySQL запросит старый пароль (который мы не знаем). Просто нажмите Enter. После чего будет установлен новый пароль 'Str0ngP@ssword'.