Restoring deleted 'root' user and password for MySQL

前端 未结 9 1986
独厮守ぢ
独厮守ぢ 2020-11-27 03:47

I accidentally deleted the root user on my local dev setup of MAMP/MySQL running on OS X. There are no other users created to get back into MySQL.

Thi

9条回答
  •  自闭症患者
    2020-11-27 03:54

    The translated version of http://hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html - for OS X.

    Open TextEdit.app and select in Format -> "Make plain text".
    Cut and paste the following into TextEdit and save it into your HOME folder with name 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';
    

    Save and quit TextEdit.app.

    Stop you mysqld server. How to do this, depends on what installation did you use for MySQL. You probably have an PreferencePane in your system preferences. If not, you must consult the docs for your MySQL installation.

    Open Terminal.app (Applications/Utilities) Enter the following commands:

    sudo mysqld --skip-grant-tables &  #start your MySQL server without access control
    mysql -vv < ~/restore_root_privileges.sql
    sudo mysqladmin -p shutdown
    

    Start your MySQL server as usually, e.g. from PreferencePanes.
    In the Terminal.app: enter the following:

    mysql -u root -p
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
    mysql> quit;
    

    That's all. Without any warranty. You can loose all you data if do something wrong. Backup first your mysql files.

    If you got something like:

    -bash: mysql: command not found
    

    thats mean, than your installation is incorrect and you should find where are your mysql binaries, and need enter the directory into you PATH variable.

提交回复
热议问题