Восстановление удаленного пользователя 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 и сделайте следующее:
Добавьте 'skip-grant-tables' в my.cnf в разделе [mysqld]
перезапустите MySQL
введите mysql без пароля и нажмите Enter
Запустите это:
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';
выход из mysql
удалите 'skip-grant-tables' из my.cnf в разделе [mysqld]
перезапустите 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, поэтому мне пришлось сделать следующее
- остановить процесс mysqld, найденный с
PS Aux | grep mysql
- и остановил любой процесс MySQL, найденный с
убить -9 [pid]
- Затем мне пришлось правильно перезапустить mysqld с того места, где у меня были исполняемые файлы mysql. Коммнада запустит mysld без запроса пароля (вроде как в safemode)
/ Приложения /MAMP/ Библиотека /bin/mysqld --skip-grant-tables --skip-network &
Я попытался с файлом my.cnf, но не смог заставить его работать.
- тогда я должен был пойти в MySQL в оболочке
/ Приложения /MAMP/ Библиотека / bin / mysql -u root -p
(если запрашивается пароль, просто нажмите Enter)
затем выполните команды eric и rolando posts, на этот раз я не получил никакой ошибки "Команда DELETE отклонена пользователю ''@'localhost' для таблицы 'user'", если вы это сделаете, вы не запустили mysqld должным образом
затем остановите службу 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', потому что моя версия кричала, в остальном все хорошо.