Mysql8.0 恢复root权限

今天进行数据库操作的时候不小心把root用户权限给降低了,用show grants;只能有一个usege了,运行use mysql都会报错,基本上除了登陆很多权限都没了。随便一个操作都会报错(诸如ERROR 1064 (42000)、ERROR 1044(42000): Access denied for user ''@'localhost' to database等等)找了很多解决办法,很多都是针对5.x版本的数据库的操作。一番操作下来不仅没有正确纠正过来反而搞的一团糟。

下面介绍如何恢复权限。

1、停止mysql服务器。使用skip-grant-tables 登陆。

     详细说来就是

(1)在mysql安装目录下的bin目录下右键+shift->此处打开命令行窗口。

(2)首先暂停mysql服务(停止mysql服务是net stop mysql;启动mysql服务是net start mysql)

net stop mysql;
(3)执行下面的命令跳过权限表验证

mysqld --console --skip-grant-tables --shared-memory
(4)执行上面的命令之后就会卡住在某一个位置(下面的步骤全部执行成功后可以同时按Ctrl+C退出),此时就要重新打开一个新的窗口操作接下来的操作就都在新打开的命令行窗口执行了。首先也是在bin目录下右键+shift->此处打开命令行窗口。此时可以不用密码登陆了。直接运行mysql就可以登陆数据库。然后可以进行下面的操作。

2、 手动修改用户的权限。使其可以设置权限。

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
3、刷新缓冲区

FLUSH PRIVILEGES;
4、重新给root赋权

GRANT ALL ON *.* TO 'root'@'localhost';
最后再刷新一下缓冲区

FLUSH PRIVILEGES;
就可以quit退出来了。这个时候已经把权限给重新赋予给root了。此时就可以在窗口1按下Ctrl+C退出。再用net start mysql启动服务。重新用mysql -u root -p登陆数据库,查看权限就没有问题了。

 

关于修改密码:

就是将上面第2、3、4步的替换为

alter user 'root'@'localhost' identified by '新密码';
之后再运行

FLUSH PRIVILEGES;
就可以了。此外,如果普通的操作不行,就增加管理员权限打开命令提示符。
————————————————
版权声明:本文为CSDN博主「落木杉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010155223/article/details/96426612

ysql8.0重置初始密码的方式网上有很多按照步骤来就行了。
但是在使用mysqld --console --skip-grant-tables --shared-memory时会发现这个设置是无效的,没起来什么作用,导致无法免密登录。不同的情况解决的方式不同,我遇到的情形只要加上一个路径就行了:
————————————————
版权声明:本文为CSDN博主「木有君兮」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43192409/article/details/112292889

mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console --skip-grant-tables --shared-memory

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值