MySQL 恢复删除的 ‘root’ 用户和密码

MySQL 恢复删除的 ‘root’ 用户和密码

MySQL 中,root 用户是具有最高权限的管理员账户,可以进行数据库的维护和管理。但有时候会因为一些误操作或者其他原因,意外删除了 root 用户,导致无法登录 MySQL 数据库。

那么,如果发生这种情况,该怎样恢复删除的 root 用户和密码呢?下面是一些解决方案。

阅读更多:MySQL 教程

方案一:使用 mysqld_safe 启动 MySQL

使用 mysqld_safe 命令可以以安全模式启动 MySQL,在这种模式下,会跳过授权表的检查和控制,并且所有用户都可以以 root 用户身份进入 MySQL。接下来,我们可以在命令行下添加一个新的 root 用户。

Step 1:关闭 MySQL 服务

$ sudo service mysql stop
Bash

Step 2:使用 mysqld_safe 启动 MySQL

$ sudo mysqld_safe --skip-grant-tables &
Bash

这里的 & 表示将该命令放到后台运行。

Step 3:进入 MySQL 命令行

$ mysql -u root
Bash

此时你会发现不需要输入密码就可以直接进入 MySQL 命令行了。

Step 4:添加 root 用户

mysql> use mysql;
mysql> INSERT INTO user (Host, User, Password) VALUES ('localhost', 'root', PASSWORD('new_password'));
mysql> FLUSH PRIVILEGES;
mysql> quit;
SQL

这里将 new_password 替换成你想要设置的密码即可。

Step 5:重启 MySQL 服务

$ sudo service mysql restart
Bash

然后就可以使用新的 root 用户和密码登录 MySQL 了。

方案二:使用 init-file 选项

另一种方法是以特殊模式启动 MySQL,并指定一个初始化文件,该文件包含添加一个新的 root 用户的 SQL 语句。一旦添加成功,就可以使用该用户登录 MySQL 了。

Step 1:创建初始化文件

$ sudo vim /var/lib/mysql/init-file.sql
Bash

然后在文件中添加以下内容:

INSERT INTO mysql.user (Host, User, Authentication_String, Account_locked_time, Create_user_priv, 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, password_expired, password_last_changed, password_lifetime) values ('localhost', 'root', '', null, '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', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', 0, 0, 0, 0, 'mysql_native_password', 'N', CURRENT_TIMESTAMP(), '0')
SQL

这里将 root 用户的密码设置为空,相当于没有密码。

Step 2:停止 MySQL 服务

与方案一相同

Step 3:以特殊模式启动 MySQL

$ sudo mysqld --init-file=/var/lib/mysql/init-file.sql &
Bash

Step 4:等待 MySQL 启动

接下来,MySQL 会自动运行初始化文件并添加新的 root 用户,这需要一定时间,请耐心等待。

Step 5:重启 MySQL 服务

与方案一相同

方案三:使用备份文件恢复 root 用户和密码

如果之前备份了 MySQL 数据库,那么也可以通过恢复备份文件来恢复 root 用户和密码。具体操作步骤如下:

Step 1:先备份当前数据

在操作前,先备份当前 MySQL 数据库,以便操作不当时能够恢复。

Step 2:停止 MySQL 服务

与方案一相同

Step 3:找到最近的备份文件

可以通过使用 ls 命令来列出备份目录下的所有备份文件。

Step 4:恢复备份文件

如果备份文件以 sql 格式存储,可以使用以下命令来恢复备份:

$ sudo mysql -u root < /path/to/backup/file.sql
Bash

如果备份文件以 gztar.gz 格式存储,可以使用以下命令解压和恢复备份:

$ sudo gunzip < /path/to/backup/file.sql.gz | mysql -u root
Bash

或者

$ sudo tar xvfz /path/to/backup/file.tar.gz -C /tmp
$ sudo mysql -u root < /tmp/backup/file.sql
Bash

请根据自己的备份文件格式进行选择。

Step 5:重启 MySQL 服务

与方案一相同

总结

无论是通过 mysqld_safe、init-file 选项还是备份文件来恢复 root 用户和密码,都需要先停止 MySQL 服务,然后进行相应的操作,最后再重启 MySQL 服务。在操作前,也要先备份当前数据,以防操作出错。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册