mysql5.6.38误删除root用户后的一系列问题及解决办法

首先要知道,root@'localhost'是mysql自带的用户,咱们用drop删除时,只是从mysql.user表里面删除了这个用户,重新加回来就好了。mysql

首次恢复

1. 关闭当前mysql实例
2.使用跳过认证的方式启动mysql实例sql

# mysqld_safe --skip-grant-tables &

3. 免密登陆mysql数据库

这时能够免密进入mysql,并且这时的身份就是root。服务器

4.开始恢复ide

mysql>use mysql mysql> insert into user set user='root',ssl_cipher='',x509_issuer='',x509_subject=''; 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';commit;

五、退出数据库,修改密码便可spa

恢复之后的问题

使用grant时,报错以下:code

mysql> grant all on *.* to root@'10.0.0.%' identified by '123456'; ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

从新对root@'localhost'受权

一开始觉得是$basedir/的权限被人搞乱了,去看了一下,彻底没有错误,因此猜想,是否是恢复root用户时,没有赋予root@'localhost'正确的权限。blog

接下来就是恢复其正确的管理员权限:ip

1中止mysql服务器。使用skip-grant-tables 登录。ssl

2 手动修改用户的权限。使其能够设置权限。

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';

3 刷新缓冲区

FLUSH PRIVILEGES;

4 而后你就可使用

GRANT ALL ON *.* TO 'root'@'localhost';

5 可使用以下命令产看用户权限

select * from mysql.user\G

至此,应该能够正常使用grant命令了。

相关文章
相关标签/搜索