为MySQL恢复已删除的“root”用户和密码
我不小心删除了在OS X上运行的MAMP / MySQL的本地开发设置上的root
用户。没有其他用户创build回MySQL。
这是一个温和的噩梦似乎无法做任何事情没有root
。
发现这个: http : //hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html这似乎正是我所需要的。
我也不认为重新安装MAMP是可以做到这一点的,因为我大量的粗略search都让那些试图没有成功的人产生了效果。
有谁知道一个OSX友好的方式来重新创buildroot
@ localhost
到MAMP的MySQL? 我基本上不知道MySQL在MAMP中的位置,或者如何在terminal执行正确的命令来尝试修复它。
更新
我尝试了几个选项来恢复根无效,并决定恢复整个MAMP应用程序的备份。 所以我有根回来,我可以打开phpmyadmin等。
我有一个快速和肮脏的方式
获得具有SysAdmin权限的人员并执行以下操作:
-
在my.cnf的[mysqld]部分添加'skip-grant-tables'
-
重启mysql
-
inputmysql并input密码
-
运行这个:
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
-
在[mysqld]部分的my.cnf中删除'skip-grant-tables'
-
重启mysql
这应该是一切!
用于OS X的http://hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html的翻译版本。;
打开TextEdit.app并select格式 – >“制作纯文本”。
将以下内容剪切并粘贴到TextEdit中,并将其保存到名为restore_root_privileges.sql
HOME文件夹中
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(Applications / Utilities)input以下命令:
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中:input以下内容:
mysql -u root -p mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; mysql> quit;
就这样。 没有任何保证。 如果做错了,你可能会丢失所有数据。 先备份你的mysql文件。
如果你有这样的东西:
-bash: mysql: command not found
这意味着,比你的安装是不正确的,你应该find你的mysql二进制文件在哪里,并需要input目录到你的PATHvariables。
我刚刚得到同样的问题。 我在Windows 7上使用Xammp。我意外地在phpmyadmin中删除了一个root用户。
看来我能够解决这个问题,如下所示:
在xammp控制中停止apache和mysql
转到… / xammp / mysql
你会看到文件“resetroot”。 运行这个文件
这个应用程序完成后,重新启动您的MySQL和Apache
转到phpmyadmin,你会看到恢复的根用户
现在您可以再次访问所有的数据库
使用mamp。 我创build另一个用户时删除root用户显然是一个常见的错误,我被locking了!
所以我发现这个post,并试图按照指示,但…
我得到这个错误:-bash:mysql:命令没有find当试图执行命令mysql命令,后来我得到这个错误DELETE命令拒绝用户'''本地主机'的表'用户'当tring设置正确特权给root用户,并在shell中执行任何与mysql用户有关的操作。
所以之前我可以使用命令eric和rolando张贴(谢谢你们),这是我做的
我需要正确启动mysqld,所以我必须做到以下几点
- 停止使用mysqld进程
ps aux | grep mysql 并停止mamp界面应用程序以及..
- 并停止任何mysql进程find
杀-9 [pid] 在继续之前,确保没有运行mysql进程。
- 那么我不得不从实际的地方,我有MySQL的二进制文件重新启动mysqld此commnad将启动mysld而不要求密码(有点像在安全模式)
/ Applications / MAMP / Library / bin / mysqld –skip-grant-tables –skip-networking&
我试着用my.cnf文件,但不能得到它的工作。
- 那么我不得不在shell中进入mysql
/ Applications / MAMP / Library / bin / mysql -u root -p
(如果提示input密码,只需按Enter键)
-
然后执行命令eric和rolando张贴,这次我没有得到任何错误“DELETE命令拒绝给用户'''本地主机'的表'用户'”如果你这样做,你没有正确启动mysqld
-
然后停止mysqld服务:
/ Applications / MAMP / Library / bin / mysqld stop
然后像gui一样重新启动mamp
所有人都开始像以前一样工作了…我很放心!
2小时的恐慌和与控制台的试验和错误…宝贵的经验教训..
如果我搞砸了任何命令或解释(可能是这样,因为我正在追踪我的步骤,因为写这篇文章请让我知道,我很乐意更新这个职位。
最后不给。 它可以做到!
我昨天做了同样的事情,刚刚对Mac和SQL服务器。 我不小心删除了root用户,因为我在特权中按了错误的button,同时尝试设置新的用户和密码。
我在这台电脑上没有任何使用的工作,所以并不担心删除我的网站。
- 我先卸载了MAMP Pro(为此我在Launchpad中有一个图标)。
- 然后我从应用程序文件夹中删除了MAMP目录。
- 然后我从网上下载重新安装了MAMP。
- 然后,我删除了Safari浏览器中的所有cookie,caching等。
- 我closures了电脑并重新启动。
一旦MAMP启动,我现在可以通过启动页面上的链接访问phpMyAdmin。
只是想贡献我如何解决这个问题。 如果您不小心删除了MAMP PRO中的root用户,并且正在使用带有Time Machine备份的OSX。 只需在finder中find这个文件夹:
/库/应用程序支持/ appsolute /
然后从顶部菜单栏中input“Time Machine”,并恢复MAMP PRO文件夹的最近备份。 为我省了很多麻烦。
好的,停止运行你的MySQL,并打开它随附的安装文件。 应该有一个名为resetroot.bat的bat文件。 运行它,你的问题将会消失。