Восстановление удаленного пользователя 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, или как выполнить правильные команды в терминале, чтобы попытаться исправить его.
Update
Я попробовал несколько вариантов ниже для восстановления root безрезультатно и решил восстановить резервную копию всего приложения MAMP. Итак, у меня есть root, я могу открыть phpmyadmin и т.д.
Ответы
Ответ 1
У меня быстрый и грязный способ
Получить кого-то с правами 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
Это должно быть все!
Ответ 2
переведенная версия 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.
Ответ 3
У меня просто такая же проблема. Я использую Xammp в Windows 7. Я случайно удалил пользователя root в phpmyadmin.
Похоже, я смог решить проблему в удобном виде следующим образом:
Остановить apache и mysql в управлении xammp
Перейдите к... /xammp/mysql
Вы увидите файл "resetroot". Запустите этот файл
После завершения этого приложения перезапустите mysql и apache
Перейдите в phpmyadmin, и вы увидите, что пользователь root восстановлен.
Теперь вы можете снова получить доступ ко всем своим базам данных
Ответ 4
с использованием мама. Я сделал, по-видимому, общую ошибку при удалении пользователя root при создании другого пользователя, я был заблокирован!
поэтому я нашел этот пост и попытался следовать указаниям, но...
Я получал следующие ошибки:
- bash: mysql: команда не найдена при попытке выполнить команду mysql команд, а позже я получал эту ошибку
Команда DELETE запретила пользователю "@" localhost "для таблицы" пользователь ", когда tring устанавливает правильные привилегии для пользователя root и делает что-либо с этим пользователем после mysql в оболочке.
прежде чем я смог использовать команды eric и rolando (спасибо вам, ребята, за это)
это то, что я сделал
Мне нужно запустить mysqld правильно
Я должен был сделать следующее
- остановить процесс mysqld, найденный с помощью
ps aux | grep mysql
и остановите приложение интерфейса мама, а также.
- и остановил любой процесс mysql, найденный с помощью
kill -9 [pid]
убедитесь, что процесс mysql не запущен, прежде чем идти дальше.
- тогда мне пришлось перезапустить mysqld должным образом из фактического местоположения, где у меня были бинарные файлы mysql
этот commnad запустит mysld без запроса пароля (вроде как в safemode)
/Приложения/MAMP/Library/bin/mysqld --skip-grant-tables --skip-networking &
Я попытался с файлом my.cnf, но не смог заставить его работать.
- тогда мне пришлось зайти в mysql в оболочке
/Приложения/MAMP/Library/bin/mysql -u root -p
(если запрашивается пароль, просто нажмите Enter)
-
затем выполните команды eric и rolando, на этот раз у меня не получилась ошибка "DELETE команда запрещена пользователю" '' localhost 'для таблицы' user '', если вы это сделаете, вы не запустили mysqld правильно
-
затем остановите службу mysqld:
/Приложения/MAMP/Library/bin/mysqld stop
затем перезапустил мам, как обычно, с gui
и все начали работать снова, как было до этого... Я был так рад!
2 часа паники и проб и ошибок с консолью... ценные уроки.
Если я испортил любую из команд или объяснение (что могло бы быть так, как я отслеживал свои шаги назад, когда писал этот пост, пожалуйста, дайте мне знать. Я был бы рад обновить сообщение.
наконец не дают. это можно сделать!!
Ответ 5
Вчера я сделал то же самое, будучи новым для mac и sql-сервера. Я случайно удалил пользователя root, потому что я нажал неправильную кнопку в Привилегии, пытаясь настроить нового пользователя и пароль.
У меня не было никакой работы на этом компьютере, поэтому я не беспокоился об удалении моих сайтов.
- Сначала я удалил MAMP Pro (для которого у меня был значок в Launchpad).
- Затем я удалил каталог MAMP из папки "Приложения".
- Затем я переустановил MAMP из интернет-загрузки.
- Затем я удалил все свои файлы cookie, кеш и т.д. из сафари.
- Я выключил компьютер и перезагрузился.
Теперь у меня есть доступ к phpMyAdmin по ссылке на начальной странице после загрузки MAMP.
Ответ 6
Просто хотел внести свой вклад, как я решил это. Если вы случайно удалили пользователя root в MAMP PRO и используете OSX с резервными копиями Time Machine. Просто перейдите в эту папку в finder:
/Library/Поддержка приложений /appsolute/
Затем "Ввести машину времени" из верхней панели меню и восстановить последнюю резервную копию папки MAMP PRO. Сэкономить много хлопот для меня.
Ответ 7
Хорошо, перестаньте работать с MySQL и откройте файлы установки, с которыми он пришел. Должен быть файл bat с именем resetroot.bat. Запустите его, и ваша проблема исчезнет.
Ответ 8
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 = '';
Ответ 9
Я работал на CentOS 6. Мне пришлось убрать Create_tablespace_priv = 'y', потому что моя версия кричала, в остальном все хорошо.