Как сбросить пароль root в MySQL (Percona Server) на Debian 12.7 через безопасный режим (skip-grant-tables)?
Сброс пароля root в Percona Server (MySQL-совместимый) на Debian 12.7 через режим skip-grant-tables выполняется в несколько шагов. Этот метод позволяет войти в сервер без аутентификации и установить новый пароль.
**Шаг 1. Остановите службу Percona Server**
Выполните команду:
sudo systemctl stop mysql
**Шаг 2. Запустите MySQL в безопасном режиме**
Отредактируйте конфигурационный файл `/etc/mysql/mysql.conf.d/mysqld.cnf` (или `/etc/mysql/percona-server.conf.d/mysqld.cnf`) и добавьте в секцию `[mysqld]` строку:
skip-grant-tables
skip-networking
Параметр `skip-networking` дополнительно блокирует сетевые подключения, что повышает безопасность во время сброса пароля.
Затем запустите сервис:
sudo systemctl start mysql
**Шаг 3. Подключитесь к MySQL без пароля**
mysql -u root
**Шаг 4. Сбросьте пароль**
В консоли MySQL выполните:
sql
FLUSH PRIVILEGES;
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘НовыйПароль’;
FLUSH PRIVILEGES;
Если команда `ALTER USER` не работает, попробуйте:
sql
UPDATE mysql.user SET authentication_string=» WHERE User=’root’ AND Host=’localhost’;
FLUSH PRIVILEGES;
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘НовыйПароль’;
**Шаг 5. Верните конфигурацию в исходное состояние**
Удалите или закомментируйте строки `skip-grant-tables` и `skip-networking` из конфигурационного файла, затем перезапустите сервис:
sudo systemctl restart mysql
**Шаг 6. Проверьте подключение с новым паролем**
mysql -u root -p
Введите новый пароль — вы должны успешно войти.
**Важные замечания:**
— Никогда не оставляйте сервер запущенным с `skip-grant-tables` дольше, чем необходимо — это полностью отключает аутентификацию.
— В Percona Server 8.x используется плагин `caching_sha2_password` по умолчанию. Если нужна совместимость со старыми клиентами, укажите плагин явно: `IDENTIFIED WITH mysql_native_password BY ‘НовыйПароль’`.
— Убедитесь, что файл конфигурации принадлежит пользователю `root` и имеет права `644`.
— После сброса рекомендуется выполнить `mysql_secure_installation` для дополнительной защиты сервера.
