zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

mysql报错 1142 - SELECT command denied to user ‘dev‘@‘localhost‘ for table ‘user‘ (已解决)

mysql 解决 报错 for to Table user SELECT
2023-09-14 09:05:18 时间
  • 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,目前任某金融品类App负责人。
  • 荣誉:2022年度博客之星Top4博客专家认证、全栈领域优质创作者、新星计划导师“星荐官共赢计划” 发起人
  • 现象级专栏《白宝书系列》作者文章知识点浅显易懂且不失深度TFS-CLUB社区创立者旨在以“赋能 共赢”推动共建技术人成长共同体

专栏系列(点击解锁)学习路线(点击解锁)
Python全栈白宝书 零基础入门篇
语法进阶篇
自动化办公篇
自动化测试实战篇
数据库开发实战篇
爬虫入门与实战
数据分析篇
前端入门+flask 全栈篇
django+vue全栈篇
拓展-人工智能入门


今天在写 MySQL 相关的文章演示新增用户的时候出现了如下报错信息 【1142 - SELECT command denied to user ‘dev’@‘localhost’ for table ‘user’】,从提示来看就是 “user” 表的 “dev” 用户不能执行 “SELECT” 命令。(其实就是没有权限,用管理员账号给他授权就行了)


⭐️ 错误分析

错误信息 1142 - SELECT command denied to user 'dev'@'localhost' for table 'user'

OK,首先登录我们的 root 用户,来查看一下 dev 用户的信息。

执行命令 SELECT * FROM mysql.USER; ,见下图:

图中用红色框起来的全部为 “N” 的字段,代表的意思就是当前这个用户没有这些权限。(需要注意的是,这个权限代表的是服务器的权限。)


⭐️ 解决办法

最直接了当的方法就是,将上面为 “N” 的字段,改为 “Y” 即可。当时因为当前的用户是 “dev” ,我们并不想要赋予其太大的权限,所以只需要赋予其 Select_priv 字段的权限为 Y 即可。

这样的话, dev 用户就只拥有了服务器的查看权限,而不会有其他的 增、删、改 的权限。同时再赋予 dev 用户可以管理的数据库的权限即可。

如此之后, dev 用户的权限其实并未生效,需要再刷新MySQL的系统权限相关表:执行命令 flush privileges;

还需要重启 MySQL服务器才可以生效,在终端执行命令 net restart mysql ,如此就解决了 dev 用户没有权限的问题了。