恢复MySQL用户根

时间:2018-11-15 06:26:35

标签: mysql phpmyadmin

我不小心删除了在OS X上运行的MySQL本地安装上的root用户。没有创建其他用户可恢复到MySQL。任何人都知道如何在mysql中还原root用户。

1 个答案:

答案 0 :(得分:4)

我有个快速而肮脏的方式

找一个拥有SysAdmin权限的人,然后执行以下操作:

  1. 在[mysqld]部分下的“ /etc/mysql/mysql.conf.d/mysqld.cnf”中添加“ skip-grant-tables”

  2. 重启mysql

  3. 输入没有密码的mysql,然后按Enter键

  4. 运行此:

    DELETE FROM mysql.user 
    WHERE  user = 'root' 
           AND host = 'localhost';
    
    INSERT INTO `user` (
        `Host`, `User`, `Select_priv`, `Insert_priv`, 
        `Update_priv`, `Delete_priv`, `Create_priv`, 
        `Drop_priv`, `Reload_priv`, `Shutdown_priv`, 
        `Process_priv`, `File_priv`, `Grant_priv`, 
        `References_priv`, `Index_priv`, `Alter_priv`, 
        `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, 
        `Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, 
        `Repl_client_priv`, `Create_view_priv`, `Show_view_priv`, 
        `Create_routine_priv`, `Alter_routine_priv`, 
        `Create_user_priv`, `Event_priv`, `Trigger_priv`, 
        `Create_tablespace_priv`, `ssl_type`, `ssl_cipher`, 
        `x509_issuer`, `x509_subject`, `max_questions`, 
        `max_updates`, `max_connections`, `max_user_connections`, 
        `plugin`, `authentication_string`, `password_expired`, 
        `password_last_changed`, `password_lifetime`, `account_locked`
    ) VALUES (
        'localhost', 'root', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 
        'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 
        'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', 
        0, 0, 0, 0, 'mysql_native_password', 
        '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B', 'N', 
        '2018-07-20 14:47:59', NULL, 'N'
    );
    
  5. 从mysql退出

  6. 从[mysqld]部分下的/etc/mysql/mysql.conf.d/mysqld.cnf删除'skip-grant-tables'

  7. 重启mysql

那应该是全部!