15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати
01.11.2024
1 +1

Як скинути пароль Root у MySQL: Повний покроковий посібник

Втрата доступу до облікового запису MySQL root — одна з найпоширеніших і найстресовіших ситуацій, з якою може зіткнутися адміністратор бази даних. Незалежно від того, чи ви забули пароль, отримали сервер без облікових даних або вам потрібно змінити його для відповідності вимогам безпеки, скидання пароля root MySQL — це критична навичка, яку повинен опанувати кожен системний адміністратор.

Цей комплексний посібник проведе вас через весь процес безпечно та ефективно, охоплюючи як середовища Linux, так і Windows, кілька версій MySQL та найкращі практики для забезпечення безпеки вашої інфраструктури бази даних після цього.

Що таке користувач MySQL root і чому це важливо?

Користувач root — це облік суперкористувача MySQL за замовчуванням. Він має необмежені привілеї на всьому сервері бази даних — створення та видалення баз даних, управління обліковими записами користувачів, зміна конфігурацій системи та виконання будь-якої команди SQL без обмежень.

Через цей підвищений доступ облік root є одночасно найпотужнішим і найчутливішим компонентом вашої інсталяції MySQL. Скомпрометований або недоступний облік root може зупинити весь стек вашої програми. Ось чому розуміння того, як безпечно скинути цей пароль, не є опціональним — це фундаментальна адміністративна відповідальність.

Якщо ви запускаєте MySQL на середовищі VPS Hosting або Dedicated Server, у вас є повний доступ на рівні root ОС, що робить процес відновлення простим. Спільні середовища можуть мати обмеження — ми розглянемо і ці сценарії.

Передумови перед початком

Перед початком процесу скидання пароля переконайтеся в наступному:

  • У вас є доступ SSH до сервера Linux або доступ RDP/локальний до сервера Windows
  • У вас є привілеї sudo або адміністратора на операційній системі
  • Ви знаєте, яка версія MySQL встановлена (запустіть mysql --version для перевірки)
  • У вас є доступне вікно обслуговування, оскільки MySQL буде тимчасово зупинено

> Попередження про безпеку: Метод --skip-grant-tables тимчасово вимикає аутентифікацію для всіх з’єднань MySQL. Завжди виконуйте цю процедуру в захищеному мережевому середовищі та завершіть її якомога швидше.

Крок 1 — Зупинення сервера MySQL

Першим кроком є коректне завершення роботи служби MySQL. Точна команда залежить від вашої операційної системи та системи ініціалізації.

На Linux (systemd — Ubuntu, Debian, CentOS 7+, RHEL 7+)

sudo systemctl stop mysql

Для інсталяцій MariaDB використовуйте:

sudo systemctl stop mariadb

На Linux (SysVinit — старіші дистрибутиви)

sudo service mysql stop

На Windows

Відкрийте Command Prompt від імені адміністратора та запустіть:

net stop mysql

Як альтернатива, відкрийте Services (services.msc), знайдіть службу MySQL, клацніть на ній правою кнопкою миші та виберіть Stop.

Перевірка: Переконайтеся, що MySQL зупинено перед продовженням:

sudo systemctl status mysql

Результат повинен показати inactive (dead).

Крок 2 — Запуск MySQL у безпечному режимі з --skip-grant-tables

Це основа процесу відновлення. Запуск MySQL з прапором --skip-grant-tables інструктує сервер обійти його нормальні механізми аутентифікації та перевірки привілеїв, дозволяючи вам підключитися без пароля.

На Linux

sudo mysqld_safe --skip-grant-tables &

Амперсанд (&) запускає процес у фоновому режимі, звільняючи ваш термінал для наступних кроків.

На новіших системах, де mysqld_safe застарів, використовуйте:

sudo mysqld --skip-grant-tables --skip-networking &

> Найкраща практика: Додавання --skip-networking запобігає будь-яким віддаленим з’єднанням під час цього вразливого вікна, значно зменшуючи вашу поверхню атаки.

На Windows

Відкрийте Command Prompt від імені адміністратора, перейдіть до каталогу інсталяції MySQL (зазвичай C:Program FilesMySQLMySQL Server X.Xbin) та запустіть:

mysqld --skip-grant-tables

Залиште це вікно Command Prompt відкритим і продовжуйте в новому.

Крок 3 — Вхід до MySQL без пароля

З MySQL, що працює в безпечному режимі, відкрийте нове вікно терміналу та підключіться до сервера MySQL як root без введення пароля:

mysql -u root

Ви повинні негайно потрапити на запит MySQL:

mysql>

Якщо ви отримаєте помилку з’єднання, зачекайте кілька секунд, поки процес безпечного режиму повністю ініціалізується, і спробуйте ще раз.

Крок 4 — Скидання пароля root

Тепер ви знаходитеся в MySQL з повними привілеями. Точні команди дещо відрізняються залежно від вашої версії MySQL.

Для MySQL 5.7.6+ та MySQL 8.x (рекомендується)

Спочатку перезавантажте таблиці привілеїв, щоб повторно ввімкнути перевірку привілеїв:

FLUSH PRIVILEGES;

Потім оновіть пароль root, використовуючи сучасний синтаксис ALTER USER:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';

Застосуйте зміни негайно:

FLUSH PRIVILEGES;

Для MySQL 5.7.5 та раніше

FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('YourNewStrongPassword!');
FLUSH PRIVILEGES;

Для MariaDB

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
FLUSH PRIVILEGES;

> Порада щодо надійності пароля: Використовуйте пароль довжиною щонайменше 16 символів, що поєднує великі літери, малі літери, цифри та спеціальні символи. Уникайте слів зі словника та передбачуваних шаблонів. Розгляньте можливість використання спеціалізованого менеджера паролів для його безпечного зберігання.

Крок 5 — Вихід з запиту MySQL

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

EXIT;

Крок 6 — Зупинення процесу безпечного режиму та перезапуск MySQL у звичайному режимі

Тепер ви повинні завершити екземпляр --skip-grant-tables та запустити MySQL з повною безпекою.

На Linux

Знайдіть і зупиніть процес MySQL у безпечному режимі:

sudo systemctl stop mysql

Потім запустіть MySQL у звичайному режимі:

sudo systemctl start mysql

Переконайтеся, що він працює правильно:

sudo systemctl status mysql

На Windows

У вікні Command Prompt, де запущено mysqld --skip-grant-tables, натисніть Ctrl+C, щоб зупинити його. Потім перезапустіть службу MySQL:

net start mysql

Крок 7 — Тестування нового пароля root

З MySQL, що працює у звичайному режимі, переконайтеся, що ваш новий пароль працює:

mysql -u root -p

Введіть ваш новий пароль, коли буде запропоновано. Якщо ви успішно потрапите на запит MySQL, скидання завершено.

Welcome to the MySQL monitor. Commands end with ; or g.
mysql>

Запустіть швидку перевірку розумності, щоб переконатися, що ваші привілеї залишилися:

SHOW DATABASES;

Ви повинні побачити повний список баз даних на сервері.

Усунення неполадок із поширеними проблемами

«Access Denied» після скидання

Це зазвичай означає, що команда FLUSH PRIVILEGES не була виконана перед оператором ALTER USER. Повторіть процес безпечного режиму та переконайтеся, що ви спочатку скидаєте привілеї.

MySQL не запускається у безпечному режимі

Перевірте журнал помилок MySQL для отримання деталей:

sudo tail -100 /var/log/mysql/error.log

Поширені причини включають проблеми з дозволами файлів або залишений файл блокування. Видаліть файл PID, якщо необхідно:

sudo rm /var/run/mysqld/mysqld.pid

Кілька облікових записів root

MySQL може мати кілька записів root для різних хостів (наприклад, root@localhost, root@127.0.0.1, root@::1). Якщо у вас все ще виникають проблеми з доступом, оновіть їх усі:

FLUSH PRIVILEGES;
ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY 'YourNewStrongPassword!';
ALTER USER 'root'@'::1' IDENTIFIED BY 'YourNewStrongPassword!';
FLUSH PRIVILEGES;

Найкращі практики безпеки після скидання

Успішне скидання пароля — це лише половина роботи. Після того як ви відновили доступ, впровадьте ці заходи посилення:

  1. Запустіть mysql_secure_installation — Цей інтерактивний скрипт видаляє анонімних користувачів, вимикає віддалений вхід root, видаляє тестову базу даних та перезавантажує таблиці привілеїв.
  1. Обмежте root лише localhost — Ніколи не дозволяйте облікові записи root підключатися віддалено. Створіть спеціальних користувачів з обмеженими привілеями для доступу на рівні програми.
  1. Ввімкніть аудит MySQL — Відстежуйте всі спроби аутентифікації та зміни привілеїв.
  1. Тримайте MySQL в актуальному стані — Регулярно застосовуйте патчі безпеки для захисту від відомих вразливостей.
  1. Використовуйте SSL для з’єднань бази даних — Якщо ваша програма підключається до MySQL через мережу, зашифруйте цей трафік. Поєднайте це з дійсним
15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати