【原创】ERROR 1142 (42000): command denied to user 引发的权限不足问题[亲测有效]

基于mysql5.7.x

正常创建数据库 查看权限>>> show grants; 在这里插入图片描述
会对root主机的所有用户执行最大权限:all privileges
但是!!!
我手欠,执行了个revoke

	mysql> revoke all privileges on *.* from root@'localhost';

导致这权限全无 变成了默认的usage

然后当你执行各种数据库命令的时候,包括增删改查什么的,就会发现:
ERROR 1142 (42000): SELECT command denied to user 'root'@'localhost' for table 'user'
这个42000 错误表示:该用户目前没有SELECT 的权限…
然后就各种先办法恢复啊…

最后找到一种方法,也比较笨吧

1、先退出mysql,找到mysql的配置文件 我的文件在这里 ./etc.my.cnf

然后在配置文件添加:

    skip-grant-tables  跳过表的权限验证,用户可以执行增删改查

2、然后重新启动mysql,

    service mysqld restart

如果mysql没有注册,可以找到mysql/bin下面的mysqld,执行./mysqld restart 也是一样的

3、进入mysql,切换到mysql数据库,找到user表,查看user表的权限:

select * from user\G; //查看mysql所有用户信息

就能查到一下的信息,我这里是已经改好的All privileges状态,
usage默认全都是N… 啥权限都没有

4、修改权限,

在mysql数据库中执行:

update mysql.user set select_priv='Y' where user='root';

缺少那个权限就该那个权限…
都改完了之后再执行:

	show grants;

就会发现: 权限又都回来了

这里说一下:
*.*  指 数据库名.表名 
root@'localhost' root主机下的所有用户,root是主机名,localhost是用户名,用户名可以设置成任意ip限制用户权限。

感谢几位大佬的博客,多多学习:
https://blog.csdn.net/qq_38487155/article/details/82725873 恢复超级管理员权限方法
https://www.cnblogs.com/Richardzhu/p/3318595.html grant权限管理 讲的很容易理解
https://blog.csdn.net/wulantian/article/details/38230635 也是关于grant权限的讲解
https://www.cnblogs.com/kevingrace/p/5719536.html 关于grant还有revoke回收权限

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值