Вопрос: Как сбросить или восстановить пароль учетной записи администратора для MySQL?


У меня есть база данных MySQL, которую я «унаследовал», и мне не были предоставлены учетные данные администратора. Однако у меня есть доступ к коробке, в которой он работает. Есть ли способ восстановить учетные данные администратора или создать новые?


14
2018-05-04 20:45


Источник




Ответы:


Чтение и выполнение глава о сбросе пароля root в Справочном руководстве по MySQL.

Эта процедура запускает демон mysql без авторизации, позволяя вам подключаться без предоставления учетных данных. В этом режиме вы можете нормально подключиться и сбросить пароли и гранты. После этого не забудьте снова запустить mysql с надлежащей авторизацией.


15
2018-05-04 20:50





Если это поле Debian / Ubuntu, существует специальная учетная запись с корневым эквивалентом, называемая Debian-SYS-садоводы, Вы можете прочитать пароль в /etc/mysql/debian.cnf

Используя этот пароль, вы можете войти в mysql как debian-sys-maint, используя:

mysql --defaults-file=/etc/mysql/debian.cnf mysql

После входа в систему выполните следующие действия:

update user set password=password('<new password>') where user='root';
flush privileges;
quit;

root теперь должен быть доступен с использованием нового пароля:

mysql -uroot -p

6
2018-05-04 22:49





Мой пользователь root не существует. На

CREATE USER root@localhost;

я получил

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

Решение заключалось в

mysqld_safe  --skip-grant-tables &
mysql
INSERT INTO user (Host,User,Password) VALUES ('localhost', 'root', 'changethispassword');
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;

После этого я добавил всех приятелей один за другим с небольшой помощью из этого:

mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N

(и этот может и должен быть автоматизирован больше)

Примечание: поиск правильного числа «Y» в INSERT является ПИТА.


3
2017-08-14 18:48





Как шаги по Справочное руководство по MySQL не очень ясны, я пытаюсь ответить здесь на более легком языке. (этот ответ относится к пользователям MacBook OSX):

  1. Поскольку мы не знаем текущий пароль, сервер MySQL должен запускать пропуск / обход текущих учетных данных. Попросите MySQL-сервер пропустить таблицу грантов доступа:
    • Остановите свой сервер MySQL (если он уже запущен).
    • Найдите свой конфигурационный файл MySQL, my.cnf, (Для меня это было размещено @ /Applications/XAMPP/xamppfiles/etc, Вы можете просто искать, если не можете найти его).
    • открыто my.cnf файл в любом текстовом редакторе.
    • Добавить "skip-grant-tables" (без кавычек) в конце [mysqld] и сохраните файл.
    • Теперь запустите свой сервер MySQL. Это начнется с skip-grant-tables вариант.
  2. открыто Terminal и запустить mysql команда
  3. Выполнить команду mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
  4. Выполнить команду mysql> FLUSH PRIVILEGES;
  5. Выполнить команду mysql> exit
  6. Перезапустите сервер MySQL.

0
2017-07-22 16:14