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

14

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

slolife
источник

Ответы:

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» в INSERTPITA.

kqw
источник
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.
Саурабх Худа
источник