SELECT command denied to user 'username'@'ip' for table 'user'错误处理

错误信息

使用RDS for MySQL,程序执行查询SQL时报错如下:
<div class="code-tools">
  <i class="theme-switch-btn"></i><i class="copy-btn"></i>
</div>
<pre class="pre codeblock" id="codeblock-op1-mla-6o9"><code class="hljs pgsql"><span class="hljs-keyword">SELECT</span> command denied <span class="hljs-keyword">to</span> <span class="hljs-keyword">user</span> <span class="hljs-string">'username'</span>@<span class="hljs-string">'ip'</span> <span class="hljs-keyword">for</span> <span class="hljs-keyword">table</span> <span class="hljs-string">'user'</span> </code></pre>
<div class="pre-scrollbar-track" style="display: none;width: 100%;height: 4px;margin-bottom: 16px;">
  <div class="pre-scrollbar-thumb" style="height: 100%;background-color: #d7d8d9;position: relative;"></div>
</div>
</div> 

排查步骤

  1. 测试RDS实例是否异常。可以使用mysql客户端连接到RDS,查询对应的表,如果可以正常查询,说明RDS没有问题。
  2. 用Wireshark软件抓包本机发出的实际请求:
    1. 在Wireshark界面中,选择捕获 > 选项,在输入页签选择连接RDS的内网网卡,在输出页签填写输出的文件名,然后单击开始
      Wireshark
    2. 复现问题,问题复现后,停止抓包。
  3. 打开生成的抓包文件,在显示过滤器里输入mysql,过滤出mysql协议,找到报错的包。
    过滤mysql
  4. 在报错的条目上单击右键,选择追踪流 > TCP流
    TCP流
  5. 检查发送的SQL是否正确。
    说明 上面的案例中,报错原因在于库名是fnb,而程序拼接出来的是hnb.user,数据库名拼接错误导致报错, 修正数据库名后问题解决。
posted @   星朝  阅读(2727)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
历史上的今天:
2018-06-11 SQL总结---存储过程
2018-06-11 干货:鲜为人用的MySQL高级特性与玩法!
2018-06-11 mysql数据库优化原则
2018-06-11 SQL优化的思路及基本原则(mysql)
2018-06-11 万字总结:学习MySQL优化原理,这一篇就够了!
2018-06-11 sql中自连接的使用
2018-06-11 SQL 优化原则
点击右上角即可分享
微信分享提示