问题现象: 使用RDS for MySQL, 程序执行查询SQL时报错,如下:
SELECT command denied
to
user
'username'@
'ip'
for
table
'user'
解决方法:
1. 测试rds是否异常。 可以使用mysql客户端连接到RDS, 查询对应的表, 检查是否可以查询。 如果可以正常查询,说明RDS没有问题。
2. 抓包测试本机出包实际的请求
(1). 在Wireshark 界面中,选择 Capture -> Interface ,选择对应连接RDS的内网网卡 -> Option -> 在 File 输入框中输入要保存的文件 1.cap,然后点击 start 开始抓包。 (2). 复现问题。 (3). 问题复现后,停止抓包。
3. 分析包生成的抓包文件。 在filter里面输入mysql,过滤出来mysql协议,找到报错的包,
右击follow tcp stream
[url=http://img01.taobaocdn.com/tfscom/TB1AXoQKFXXXXa8XVXXXXXXXXXX.png]
检查发送的SQL是否正确。上面案例中的SQL:
select user0_.id as id9_, user0_.address as address9_, user0_.connection as connection9_, user0_.isonline as isonline9_, user0_.name as name9_, user0_.password as password9_, user0_.permisssion as permisss7_9_, user0_.phone as phone9_, user0_.token as token9_ from hnb.user user0_ where user0_.phone='110'
原因在于库名是fnb,程序拼接出来的是 hnb.user, 数据库名拼接错误,导致报错。 修正数据库名后,问题解决。
如果问题还未能解决,请联系[url=https://selfservice.console.aliyun.com/ticket/createIndex.htm]售后技术支持。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。