恢复MySQL的已删除"root"用户和密码

PHP*_*eer 34 mysql macos mamp

我不小心删除了root在OS X上运行的MAMP/MySQL的本地开发设置中的用户.没有其他用户创建回到MySQL.

这是一场温和的噩梦似乎无能为力root.

发现这个:http://hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html这似乎正是我需要的.

我也不认为重新安装MAMP可以解决这个问题,因为我的粗略搜索产生了许多尝试过没有成功的人.

有没有人知道OSX友好的方式重新创建root@ localhost回到MAMP的MySQL?我基本上只是不知道MySQL在MAMP中的位置,或者如何在终端中执行正确的命令来尝试修复它.

更新

我尝试了以下几个选项来恢复root无效,并决定恢复整个MAMP应用程序的备份.所以我已经回来了,我可以打开phpmyadmin等.

Rol*_*DBA 64

我有一个快速而肮脏的方式

获取具有SysAdmin权限的人员并执行以下操作:

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

  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';
    
    Run Code Online (Sandbox Code Playgroud)
  5. 退出mysql

  6. 从[mysqld]部分的my.cnf中删除'skip-grant-tables'

  7. 重启mysql

这应该是全部!

  • 上面的代码工作正常,但是使用 MySQL 版本 > 5.7 的用户需要做 2 次更改,将密码 = '',更改为 authentication_string = '',并将以下参数添加到 ssl_cipher = 'y', x509_issuer = 'y', x509_subject = 'y'; (4认同)
  • 我不得不添加ssl_cipher ='',x509_issuer ='',x509_subject =''它工作了:) (3认同)

jm6*_*666 11

适用于OS X 的http://hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html的翻译版本 .

打开TextEdit.app并选择格式 - >"制作纯文本".
将以下内容剪切并粘贴到TextEdit中,并将其保存到名称为HOME的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';
Run Code Online (Sandbox Code Playgroud)

保存并退出TextEdit.app.

停止你的mysqld服务器.怎么做,取决于你用于MySQL的安装.您可能在系统首选项中有一个PreferencePane.如果没有,您必须查阅MySQL安装的文档.

打开Terminal.app(Applications/Utilities)输入以下命令:

sudo mysqld --skip-grant-tables &  #start your MySQL server without access control
mysql -vv < ~/restore_root_privileges.sql
sudo mysqladmin -p shutdown
Run Code Online (Sandbox Code Playgroud)

通常启动MySQL服务器,例如从PreferencePanes启动.
在Terminal.app中:输入以下内容:

mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
mysql> quit;
Run Code Online (Sandbox Code Playgroud)

就这样.没有任何保证.如果做错了,您可以放弃所有数据.先备份你的mysql文件.

如果你有类似的东西:

-bash: mysql: command not found
Run Code Online (Sandbox Code Playgroud)

这意味着,比你的安装不正确,你应该找到你的mysql二进制文件的位置,并且需要在你的PATH变量中输入目录.


小智 6

我刚刚得到同样的问题.我在Windows 7上使用Xammp.我在phpmyadmin中意外删除了root用户.

看来我能够在这样的简单路线中修复问题:

在xammp控件中停止apache和mysql

转到.../xammp/mysql

您将看到文件"resetroot".运行此文件

完成此应用程序后,重新启动mysql和apache

转到phpmyadmin,您将看到root用户已恢复

现在,您可以再次访问所有数据库