大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
mysql grants 引发的权限不足问题[42000]
基于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回收权限
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188545.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...