为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权限的人员并执行以下操作:

  1. 在my.cnf的[mysqld]部分添加'skip-grant-tables'

  2. 重启mysql

  3. inputmysql并input密码

  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. 在[mysqld]部分的my.cnf中删除'skip-grant-tables'

  7. 重启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,所以我必须做到以下几点

  1. 停止使用mysqld进程

ps aux | grep mysql 并停止mamp界面应用程序以及..

  1. 并停止任何mysql进程find

杀-9 [pid] 在继续之前,确保没有运行mysql进程。

  1. 那么我不得不从实际的地方,我有MySQL的二进制文件重新启动mysqld此commnad将启动mysld而不要求密码(有点像在安全模式)

/ Applications / MAMP / Library / bin / mysqld –skip-grant-tables –skip-networking&

我试着用my.cnf文件,但不能得到它的工作。

  1. 那么我不得不在shell中进入mysql

/ Applications / MAMP / Library / bin / mysql -u root -p

(如果提示input密码,只需按Enter键)

  1. 然后执行命令eric和rolando张贴,这次我没有得到任何错误“DELETE命令拒绝给用户'''本地主机'的表'用户'”如果你这样做,你没有正确启动mysqld

  2. 然后停止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文件。 运行它,你的问题将会消失。