全部产品
云市场

使用RDS MySQL时报“SELECT command denied to user 'username'@'ip' for table 'user'”错误

问题描述

程序使用RDS MySQL执行查询SQL时,报如下错误,如何进行排查。

SELECT command denied to user 'username'@'ip' for table 'user' 

 

问题原因

库名是fnb,而程序拼接出来的是hnb.user,数据库名拼接错误导致报错。

 

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
  1. 测试RDS实例是否异常。可以使用MySQL客户端连接到RDS,查询对应的表,如果可以正常查询,说明RDS没有问题。
  2. 使用Wireshark软件抓包,抓取本机发出的实际请求。
    1. 在Wireshark界面中,依次选择 捕获 > 选项,在输入页签选择连接RDS的内网网卡,在输出页签填写输出的文件名,然后单击 开始
      Wireshark
    2. 然后复现问题,问题复现后,停止抓包即可。
  3. 打开生成的抓包文件,在显示过滤器里输入mysql,过滤出MySQL协议,找到报错的包。
  4. 在报错的条目上单击 右键,依次选择 追踪流 > TCP流
    TCP流
  5. 检查发送的SQL,确认是数据库名拼接错误,修正数据库名后问题解决。

 

问题总结

  1. 先查看程序确保发送到server端的语句语法语义正确性。
  2. 抓包分析实际执行SQL文本。

 

适用于

  • 云数据库 RDS MySQL 版

 

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。