6.5.5 Як відновити пароль root MySQL
При втраті пароля root від MySQL його можна легко відновити, маючи root доступ до самого сервера. Виконується це за допомогою входу MySQL в безпечному режимі, про що нижче.
Врахуйте: пароль root на сервері та пароль root MySQL це два різні паролі.
Покрокова інструкція на прикладі Ubuntu
Важливо: якщо у Вас система на базі ОС+ISPManager4, обов’язково ознайомтеся з другим розділом цієї статті.
1. Спочатку зупиніть службу MySQL. Для деяких інших систем сімейства Linux команди можуть відрізнятися:
sudo service mysql stop
2. Запустіть MySQL без завантаження таблиць прав доступу:
sudo mysqld_safe --skip-grant-tables --skip-networking &
Додатково: що робити, якщо mysqld_safe
не запускається? Поширеними рішеннями є:
Використовуйте sudo mysqld
Альтернативна команда виглядає так:
sudo mysqld --skip-grant-tables --skip-networking &
Відключіть monit або подібні сервіси
На серверах з панеллю ISPManager та з багатьма іншими панелями використовується monit або аналоги. У такому випадку спочатку необхідно відключити моніторинг процесу mysqld командою monit unmonitor mysqld
і лише потім убити процес. Після цього включити його знову monit monitor mysqld
.
Або тимчасово відключити monit зовсім:
service monit stop
Запущені процеси MySQL
Вже запущені паралельні процеси MySQL можуть створити необхідність їхнього ручного припинення. Спочатку отримаємо їх список командою:
ps aux | grep mysql
Потім зупинимо процеси наступною командою, де <PID>
замініть ідентифікатором процесу:
sudo kill -9 <PID>
Недостатньо прав чи проблеми з директоріями
Іноді mysqld_safe
не запускається через проблеми з правами або відсутніми директоріями. Спробуйте:
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 755 /var/lib/mysql
Також переконайтеся, що /var/run/mysqld/
існує і має правильні права:
sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
3. Тепер підключіться до сервера MySQL без пароля:
mysql -u root
4. Спочатку перейдіть на базу даних mysql:
USE mysql;
5. Спочатку потрібно ідентифікувати скільки користувачів root взагалі існує у нашому MySQL. Зробити це можна так:
SELECT host, user, password FROM user WHERE user = 'root';
Що видасть наступний результат:
Пароль потрібно буде скинути для кожного з цих користувачів, якщо ваш проект не потребує іншого.
6. Потім необхідно скиньте пароль на новий для кожного користувача root (замініть NewPassword на пароль та localhost на потрібну змінну host, список яких Ви отримали в попередньому кроці):
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
Для MySQL 5.7 та більш ранніх версій
UPDATE user SET authentication_string=PASSWORD('NewPassword') WHERE User='root';
FLUSH PRIVILEGES;
5. Перезапустіть MySQL у нормальному режимі. Для цього вийдіть з MySQL:
EXIT;
І зупиніть MySQL:
sudo service mysql stop
6. Запустіть її знову:
sudo service mysql start
7. Перевірте доступ. Спробуйте увійти з новим паролем:
mysql -u root -p
Введіть новий пароль. Якщо вхід виконано успішно, скидання завершено.
Нюанси з панелями управління
На серверах із встановленою панеллю управління про зміну пароля root MySQL потрібно також повідомити і саму панель, інакше вона зможе нормально функціонувати.
Нижче наведемо приклади для релевантних панелей управління.
ISPManager4
1. Перейдіть до розділу Сервери баз даних під root, виберіть MySQL і натисніть Змінити:
2. Встановіть новий пароль root MySQL замість старого:
3. Перезапустіть панель командою killall -9 ispmgr
або повноцінним перезавантаженням сервера.