Access denied for user root@localhost问题

忘记了root密码,或者删了root的一些权限,换来一堆报错,比如

ERROR 1142 (42000): SELECT command denied to user 'root'@'localhost' for tab
ERROR 1045 (28000): Access denied for user 'root'@'localhost'

这个时候最好别慌,如果是用Navicat,这个时候千万别关闭链接。马上把用户创建回来,并且不要吝啬权限,能给它配的全配了。不过这都是理想状态,可能慌张,可能是在清洁脏用户就想着“惜权”不配全部权限。好吧,万一最糟糕的发生了呢?还是说说如何补救。

救场步骤:

1,修改/etc/my.cnf配置,绕过权限判断

[mysqld]
skip-grant-tables

2,重启mysql,进入控制台(此时已无需密码),先刷新权限。记住先别忙着就操作权限和密码,先运行以下语句,否则你的操作依然会继续报错。

 flush privileges;

3,然后重置root密码,或者给root添加权限。

update mysql.user set authentication_string=password('新密码') where user='root';//mysql 5.7

grant all privileges on *.* to root@'localhost';

4,最后还原一下my.cnf,然后重启。

猜你喜欢

转载自www.cnblogs.com/xianxh/p/9936613.html