龙空技术网

Mysql误删root用户解决办法

爱折腾的邦邦 75

前言:

目前咱们对“mysql误删root”大约比较着重,大家都需要知道一些“mysql误删root”的相关知识。那么小编同时在网上搜集了一些关于“mysql误删root””的相关内容,希望兄弟们能喜欢,咱们一起来了解一下吧!

背景

今天下午开发组反应无法使用root用户登录到MySQL,在我登录失败几次的情况下,在配置文件中添加了skip-grant-tables选项,登录到MySQL服务,发现已经没有了root用户,而其他用户又没有root用户的权限,所以需要重新恢复root用户。

解决方法

由于该实例上的其他用户没有root权限,所以只能重新创建root用户,并且拥有最高权限,具体步骤如下:

1. 停止MySQL服务

$ service mysqld stop

2. 修改MySQL配置文件

在MySQL的配置文件中[mysqld]模块中添加skip-grant-tables配置项,示例如下:

[mysqld]#GTID configgtid_mode=ONlog-slave-updates=1enforce-gtid-consistency=1skip-grant-tables

3. 重启MySQL服务

启动MySQL服务,使配置项生效

$ service mysqld start

4. 无密码登陆MySQL

$ mysql -p 

5. 重新添加root用户

使用insert添加root用户

insert into user set user=’root’,ssl_cipher=”,x509_issuer=”,x509_subject=”;

6. 更新root用户权限

update user set Host='localhost',select_priv='y', insert_priv='y',update_priv='y', Alter_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',create_user_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' where user='root';

7. 退出重新登录设置root密码

1) 退出MySQL服务

mysql> exit

2) 以root用户无密码登录

$ mysql -uroot -p

3) 设置root用户密码

mysql> update mysql.user set authentication_string=password('123456') where user='root';mysql> flush privileges;

8. 注释掉配置文件中新添加参数

注释掉配置文件中的skip-grant-tables参数

[mysqld]#GTID configgtid_mode=ONlog-slave-updates=1enforce-gtid-consistency=1#skip-grant-tables

9. 重启MySQL

$ service mysqld restart

标签: #mysql误删root