Восстановление удаленного пользователя root и пароля для MySQL - PullRequest
32 голосов
/ 22 мая 2011

Я случайно удалил пользователя root в моей локальной настройке dev MAMP / MySQL, работающей на OS X. Других пользователей, созданных для возврата в MySQL, нет.

Этот мягкий кошмар не может ничего сделать без root.

Нашел это: http://hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html, что кажется именно тем, что мне нужно.

Я также не думаю, что переустановка MAMP сработает, так как многие мои беглые поиски позволили найти людей, которые пытались безуспешно.

Кто-нибудь знает о дружественном OSX способе?воссоздать root @ localhost обратно в MySQL MAMP?Я просто не знаю, где MySQL живет в MAMP или как выполнить правильные команды в терминале, чтобы попытаться это исправить.

Обновление

Я пробовал несколькоВарианты ниже, чтобы восстановить root безрезультатно и решили восстановить резервную копию всего приложения MAMP.Итак, у меня есть root, я могу открыть phpmyadmin и т. Д.

Ответы [ 9 ]

62 голосов
/ 22 мая 2011

У меня быстрый и грязный путь

Получите кого-нибудь с правами SysAdmin и сделайте следующее:

  1. Добавить 'skip-grant-tables' в my.cnf в разделе [mysqld]

  2. перезапустить mysql

  3. введите mysql без пароля и нажмите Enter

  4. Запустите это:

    DELETE FROM mysql.user 
    WHERE  user = 'root' 
           AND host = 'localhost'; 
    
    INSERT INTO mysql.user 
    SET user = 'root', 
        host = 'localhost', 
        password = Password('whatevernewpassword'), 
        Select_priv = 'y',
        Insert_priv = 'y',
        Update_priv = 'y',
        Delete_priv = 'y',
        Create_priv = 'y',
        Drop_priv = 'y',
        Reload_priv = 'y',
        Shutdown_priv = 'y',
        Process_priv = 'y',
        File_priv = 'y',
        Grant_priv = 'y',
        References_priv = 'y',
        Index_priv = 'y',
        Alter_priv = 'y',
        Show_db_priv = 'y',
        Super_priv = 'y',
        Create_tmp_table_priv = 'y',
        Lock_tables_priv = 'y',
        Execute_priv = 'y',
        Repl_slave_priv = 'y',
        Repl_client_priv = 'y',
        Create_view_priv = 'y',
        Show_view_priv = 'y',
        Create_routine_priv = 'y',
        Alter_routine_priv = 'y',
        Create_user_priv = 'y',
        Event_priv = 'y',
        Trigger_priv = 'y',
        Create_tablespace_priv = 'y';
    
  5. выход из mysql

  6. удалить 'skip-grant-tables' из my.cnf в разделе [mysqld]

  7. перезапустить mysql

Это должно быть все!

11 голосов
/ 22 мая 2011

Переведенная версия http://hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html - для OS X.

Откройте TextEdit.app и выберите «Формат» -> «Создать простой текст».
Вырежьте и вставьте следующую строку в TextEditи сохраните его в папке HOME с именем restore_root_privileges.sql

update mysql.user set Super_priv='y' where user='root';
update mysql.user set Select_priv='y' where user='root';
update mysql.user set Insert_priv='y' where user='root';
update mysql.user set Update_priv='y' where user='root';
update mysql.user set Delete_priv='y' where user='root';
update mysql.user set Create_priv='y' where user='root';
update mysql.user set Drop_priv='y' where user='root';
update mysql.user set Reload_priv='y' where user='root';
update mysql.user set Shutdown_priv='y' where user='root';
update mysql.user set Process_priv='y' where user='root';
update mysql.user set File_priv='y' where user='root';
update mysql.user set Grant_priv='y' where user='root';
update mysql.user set References_priv='y' where user='root';
update mysql.user set Index_priv='y' where user='root';
update mysql.user set Alter_priv='y' where user='root';
update mysql.user set Show_db_priv='y' where user='root';
update mysql.user set Super_priv='y' where user='root';
update mysql.user set Create_tmp_table_priv='y' where user='root';
update mysql.user set Lock_tables_priv='y' where user='root';
update mysql.user set Execute_priv='y' where user='root';
update mysql.user set Repl_slave_priv='y' where user='root';
update mysql.user set Repl_client_priv='y' where user='root';
update mysql.user set Create_view_priv='y' where user='root';
update mysql.user set Show_view_priv='y' where user='root';
update mysql.user set Create_routine_priv='y' where user='root';
update mysql.user set Alter_routine_priv='y' where user='root';
update mysql.user set Create_user_priv='y' where user='root';

Сохраните и выйдите из TextEdit.app.

Остановите свой сервер mysqld. Как это сделать, зависит от того, какую установку вы использовали для MySQL.Возможно, у вас есть PreferencePane в ваших системных настройках.Если нет, вы должны обратиться к документации для установки MySQL.

Открыть Terminal.app (Приложения / Утилиты) Введите следующие команды:

sudo mysqld --skip-grant-tables &  #start your MySQL server without access control
mysql -vv < ~/restore_root_privileges.sql
sudo mysqladmin -p shutdown

Запустите сервер MySQL какобычно, например, из PreferencePanes.
В Terminal.app: введите следующее:

mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
mysql> quit;

Вот и все. Без каких-либо гарантий. Вы можете потерять все свои данные, если сделаете что-то не так. Сделайте резервную копию ваших файлов mysql.

Если вы получили что-то вроде:

-bash: mysql: command not found

, это значит, что ваша установка неверна, и вы должны найти, где находятся ваши бинарные файлы mysql., и нужно ввести каталог в переменную PATH.

6 голосов
/ 23 августа 2013

У меня так же - проблема.Я использую Xammp на Windows 7. Я случайно удалил пользователя root в phpmyadmin.

Похоже, я смог решить проблему простым путем, например:

Остановите apache и mysql в элементе управления xammp

Перейдите в ... / xammp / mysql

Вы увидите файл «resetroot».Запустите этот файл

После того, как это приложение будет завершено, перезапустите mysql и apache

Перейдите на phpmyadmin и вы увидите, что пользователь root восстановлен

Теперь вы можете получить доступ ко всем вашим базам данныхснова

3 голосов
/ 07 февраля 2014

с использованием мампа. Я сделал, по-видимому, распространенную ошибку, удалив пользователя root при создании другого пользователя. Я был заблокирован!

поэтому я нашел этот пост и попытался следовать указаниям, но ...

Я получаю следующие ошибки: -bash: mysql: команда не найдена при попытке выполнить команду mysql, и позже я получил эту ошибку Команда DELETE запрещена пользователю '' @ 'localhost' для таблицы 'user', когда вы пытаетесь правильно установить привилегии для пользователя root и делать что-либо с этим пользователем один раз в оболочке mysql.

поэтому прежде чем я смогу использовать команды Эрика и Роландо (спасибо, ребята, за это) это то, что я сделал

Мне нужно правильно запустить mysqld, Я должен был сделать следующее

  1. остановка процесса mysqld, найденного с помощью

    ps aux | grep mysql

и остановите приложение интерфейса mamp, а также ..

  1. и остановил любой процесс mysql, найденный с

    kill -9 [pid]

убедитесь, что процесс mysql не запущен, прежде чем идти дальше.
  1. тогда мне пришлось правильно перезапустить mysqld с того места, где у меня были бинарные файлы mysql эта комнада запустит mysld без запроса пароля (вроде как в safemode)

/ Applications / MAMP / Library / bin / mysqld --skip-grant-tables --skip-network &

Я попытался с моим файлом .cnf, но не смог заставить его работать.

  1. тогда мне пришлось зайти в mysql в оболочке

/ Приложения / MAMP / Библиотека / bin / mysql -u root -p

(если запрашивается пароль, просто нажмите Enter)

  1. затем выполните команды eric и rolando отправленные, на этот раз я не получил никакой ошибки "Команда DELETE отклонена для пользователя" '@' localhost 'для таблицы' user '', если вы это сделаете, вы не запустили mysqld правильно

  2. затем остановите службу mysqld:

/ Приложения / MAMP / Библиотека / bin / mysqld stop

затем перезапустил mamp как обычно с графическим интерфейсом

и все снова заработало, как и раньше ... Я так обрадовался !!!

2 часа паники и проб и ошибок с консолью ... ценные уроки ..

Если я испортил какую-либо из команд или объяснение (что может иметь место, когда я прослеживал свои шаги назад при написании этого поста, пожалуйста, дайте мне знать. Я был бы рад обновить пост.

наконец не дают. это можно сделать !!

1 голос
/ 06 апреля 2016

Просто хотел внести свой вклад, как я решил это. Если вы случайно удалили пользователя root в MAMP PRO и используете OSX с резервными копиями Time Machine. Просто зайдите в эту папку в Finder:

/ Библиотека / Поддержка приложений / appsolute /

Затем в верхней строке меню введите «Enter Time Machine» и восстановите последнюю резервную копию папки MAMP PRO. Спасло много хлопот для меня.

1 голос
/ 05 июня 2012

Вчера я сделал то же самое, будучи новичком в macs и сервере sql.Я случайно удалил пользователя root, потому что я нажал неправильную кнопку в привилегиях при попытке установить нового пользователя и пароль.

У меня не было никакой работы на этом компьютере, поэтому я не беспокоился об удалении своих сайтов.

  • Сначала я удалил MAMP Pro (для которого у меня была иконка в Launchpad).
  • Затем я удалил каталог MAMP из папки Applications.
  • Затем я переустановил MAMP из Интернета.
  • Затем я удалил все файлы cookie, кеш и т. Д. Из сафари.
  • Я выключил компьютер и перезагрузил компьютер.

Теперь у меня есть доступ к phpMyAdmin по ссылке на странице запуска после загрузки MAMP.

0 голосов
/ 27 июня 2019

Работал для меня на CentOS 6. Мне пришлось убрать Create_tablespace_priv = 'y', потому что моя версия кричала, в остальном все хорошо.

0 голосов
/ 02 апреля 2019

MySQL 5.7 заменил поле Password на authentication_string (в таблице mysql.user); так что это сработало для меня.

INSERT INTO mysql.user 
SET user = 'root', 
host = 'localhost', 
authentication_string =Password('Yours_own_password'), 
Select_priv = 'y',
Insert_priv = 'y',
Update_priv = 'y',
Delete_priv = 'y',
Create_priv = 'y',
Drop_priv = 'y',
Reload_priv = 'y',
Shutdown_priv = 'y',
Process_priv = 'y',
File_priv = 'y',
Grant_priv = 'y',
References_priv = 'y',
Index_priv = 'y',
Alter_priv = 'y',
Show_db_priv = 'y',
Super_priv = 'y',
Create_tmp_table_priv = 'y',
Lock_tables_priv = 'y',
Execute_priv = 'y',
Repl_slave_priv = 'y',
Repl_client_priv = 'y',
Create_view_priv = 'y',
Show_view_priv = 'y',
Create_routine_priv = 'y',
Alter_routine_priv = 'y',
Create_user_priv = 'y',
Event_priv = 'y',
Trigger_priv = 'y',
Create_tablespace_priv = 'y',
ssl_cipher = '',
x509_issuer = '',
x509_subject = '';
0 голосов
/ 21 июля 2013

Хорошо, прекратите работу MySQL и откройте установочные файлы, которые он поставил.Должен быть файл bat с именем resetroot.bat.Запустите его, и ваша проблема исчезнет.

...