Назад | Перейти на главную страницу

Сброс, а затем восстановление пароля mysql

У меня есть пароль root в Linux. На этой машине есть сервер MySQL. Один из ini сайта был переписан, и теперь он не может получить доступ к базе данных mysql. У меня нет рута mysql для изменения пароля пользователя базы данных. Владелец сервера сейчас в отпуске, поэтому я не могу попросить его дать мне root-права mysql. Я могу сбросить пароль root mysql, но не хочу.

Я нуждаюсь:

  1. Сохранить текущий хэш пароля root mysql где-нибудь
  2. Сбросить
  3. Делайте то же самое как root mysql (сбросьте pw пользователя базы данных)
  4. Восстановите старый пароль root.

Как сделать пункты 1 и 4?

Общее процедура сброса пароля выполняется путем создания файла инициализации, который сбрасывает пароль root. Затем перезапустите сервер с возможностью принудительного запуска этого сценария с привилегиями root в качестве пользователя root.

В примере сценария показано, как вы сбрасываете пароль root, но нет никаких причин, по которым вы не могли бы просто сбросить скрипт пароля пользователя, которого вы хотите сбросить.

Поэтому, если у вас есть возможность перезапустить сервер mysql и указать файл инициализации, вы можете пропустить шаги 1, 2 и 4 и просто запустить сценарий от имени пользователя root. На самом деле нет причин, по которым вам вообще нужно трогать учетную запись root.

ВНИМАНИЕ! Требуется перезапуск mysql для шагов 1-3

Это можно сделать без ...

Как только вы войдете в Linux Box, чтобы создать себе временный корень с паролем t3mpp@assw0rdвыполните следующие шаги

ШАГ 01) service mysql restart --skip-networking --skip-grant-tables

ШАГ 02) В командной строке Linux введите mysql и нажмите Enter

ШАГ 03) Запустите эту команду SQL

SELECT COUNT(1) RootLocalhostExists FROM mysql.user
WHERE user='root' AND host='localhost';
  • Если RootLocalhostExists равно 0, остановитесь здесь. Оставьте комментарий в моем ответе.
  • Если RootLocalhostExists равно 1, перейдите к ШАГУ 04.

ШАГ 04) Выполните эти команды SQL

CREATE TABLE mysql.user2 LIKE mysql.user;
INSERT INTO mysql.user2 SELECT * FROM mysql.user
WHERE user='root' AND host='localhost';
UPDATE mysql.user SET PASSWORD=PASSWORD('t3mpp@assw0rd')
WHERE user='root' AND host='localhost';

ШАГ 05) service mysql restart

Это выполнит ваши шаги 1-3.

ВОССТАНОВЛЕНИЕ ПАРОЛЯ

Чтобы вернуть исходный корень mysql, сделайте следующее (Перезагрузка MySQL не требуется):

ШАГ 01) В командной строке Linux введите mysql -uroot -pt3mpp@assw0rd и нажмите Enter

ШАГ 02) Выполните следующий SQL

DELETE FROM mysql.user WHERE user='root' AND host='localhost';
INSERT INTO mysql.user SELECT * FROM mysql.user2;
DROP TABLE mysql.user2;
FLUSH PRIVILEGES;
EXIT

Вот и все.

Попробуйте !!!

Если ваш сервер mysql работает на debian (или ubuntu или аналогичном), вы, вероятно, можете использовать debian-sys-maint пользователь, а не пользователь root mysql. Смотреть в /etc/mysql/debian.cnf

Он имеет SUPER привилегии и может изменять пароль пользователя.