开发者社区 问答 正文

技术运维问题 - MYSQL使用 -RDS for MySQL 报错: SELECT command denied to user 'username'@


问题现象: 使用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]售后技术支持

展开
收起
梨好橙 2018-09-24 22:10:02 2399 分享 版权
阿里云 AI 助理回答

问题描述

程序在使用阿里云RDS for MySQL执行查询SQL时遇到错误信息:

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

可能原因

  • 数据库名在程序中被错误地拼接或引用,导致指定的数据库中不存在名为user的表。

解决步骤

  1. 测试RDS实例状态

    • 使用MySQL客户端连接到RDS实例,尝试查询对应表。如果查询操作成功,表明RDS实例运行正常。
  2. 抓包分析请求

    • 启动Wireshark抓包:在Wireshark中,选择捕获 > 界面,选取与RDS相连的内网网卡,设置输出文件(如1.cap),开始抓包。
    • 复现问题:在保持抓包进行的同时,重新执行引起错误的查询操作。
    • 停止并分析抓包数据:问题复现后终止抓包,打开抓取的文件,通过显示过滤器(输入mysql)筛选出相关协议包,定位报错的网络包,右键选择追踪流 > TCP流,检查实际发出的SQL语句内容。
  3. 修正数据库名

    • 根据抓包结果,确认是否因数据库名拼接错误导致问题,如示例中的库名应为fnb而非hnb。修正程序中的数据库名称后重试查询操作。

注意事项

  • 在进行任何配置更改之前,请确保对数据库进行备份,以防止数据丢失。
  • 确认所有修改操作符合安全规范,避免引入新的安全风险。
  • 如果以上步骤未能解决问题,建议联系阿里云售后技术支持获取进一步帮助。

示例

上述流程中,通过抓包发现SQL语句中的库名hnb不正确,实际应为fnb。修正后,原本的错误SQL:

select user0_.id as id9_, ... from hnb.user user0_ where user0_.phone='110';

调整为正确的形式:

select user0_.id as id9_, ... from fnb.user user0_ where user0_.phone='110';

从而解决了权限访问错误的问题。

参考资料:

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答