问题描述
程序使用RDS MySQL执行查询SQL时,报如下错误,如何进行排查。
SELECT command denied to user 'username'@'ip' for table 'user' 问题原因
数据库名使用错误,指定的库中不存在user表。
解决方案
- 测试RDS实例是否异常。可以使用MySQL客户端连接到RDS,查询对应的表,如果可以正常查询,说明RDS没有问题。 
- 使用Wireshark软件抓包,抓取本机发出的实际请求。 - 在Wireshark界面中,依次选择捕获 > 选项,在输入页签选择连接RDS的内网网卡,在输出页签填写输出的文件名,然后单击开始。  
- 然后复现问题,问题复现后,停止抓包即可。 
 
- 打开生成的抓包文件,在显示过滤器里输入mysql,过滤出MySQL协议,找到报错的包。  
- 在报错的条目上单击右键,依次选择追踪流 > TCP流。  
- 检查发送的SQL,确认是数据库名拼接错误,修正数据库名后问题解决。 
问题总结
- 先查看程序确保发送到server端的语句语法语义正确性。 
- 抓包分析实际执行SQL文本。 
适用于
- 云数据库RDS MySQL版 
该文章对您有帮助吗?