Як скинути або відновити пароль облікового запису адміністратора для MySQL?


14

У мене є база даних MySQL, яку я "успадкував", і мені не дали дані адміністратора. Однак у мене є доступ до вікна, на якому він працює. Чи є спосіб відновити облікові дані адміністратора або створити нові?

Відповіді:


15

Прочитайте та виконайте главу про скидання пароля root у Довідковому посібнику MySQL.

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


6

Якщо це поле Debian / Ubuntu, існує спеціальний кореневий еквівалентний обліковий запис, який називається debian-sys-maint . Ви можете прочитати пароль у /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

3

Мій користувач 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- це PITA.


0

Оскільки кроки в довідковому посібнику 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.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.