Восстановление удаленного пользователя root и пароля для MySQL

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

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

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

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

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

Обновить

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

7 ответов

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

Получите кого-нибудь с правами 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

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

Переведенная версия 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.

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

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

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

Перейти к.../xammp/mysql

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

После завершения этого приложения, перезапустите MySQL и Apache

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

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

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 = '';

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

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

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

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

Мне нужно правильно запустить mysqld, поэтому мне пришлось сделать следующее

  1. остановить процесс mysqld, найденный с

    PS Aux | grep mysql

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

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

    убить -9 [pid]

убедитесь, что процесс mysql не запущен, прежде чем идти дальше.

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

/ Приложения /MAMP/ Библиотека /bin/mysqld --skip-grant-tables --skip-network &

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

  1. тогда я должен был пойти в MySQL в оболочке

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам