select command denied to user ‘test0525‘@‘10.189.80.60‘ for table ‘adm_cnyloan_rate‘

程序在尝试获取表的主键信息时遇到权限问题,即使在regulation数据库上有执行任何语句的权限,但仍被拒绝SELECT命令。通过DEBUG发现问题在于执行SHOWKEYS命令时无权访问特定表。解决方案是使用具有足够权限的账户(如root)执行GRANT语句来授予所需权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

程序通过以下方式获取表的主键信息

Connection.getMetaData().getPrimaryKeys(String catalog, String schema, String table)

二、结论

出现这个提示肯定是当前mysql子账号无权限

三、排查

执行以下命令查看当前数据库拥有哪些数据库权限

SHOW GRANTS FOR dataBaseName

当前程序连接的就是regulation数据库,也能执行任何语句,但是界面的功能还是提示select command denied to user,这真tm日了狗了

 

 经过debug发现 this.getDatabaseIterator(db)  方法获取了当前jdbc信息下所有数据库列表,在循环执行

SHOW KEYS FROM tableName FROM dataBase

在SQLyog执行结果和应用程序提示一样,确认无权限

1 queries executed, 0 success, 1 errors, 0 warnings

查询:SHOW KEYS FROM adm_cnyloan_rate FROM `crm`

错误代码: 1142
SELECT command denied to user 'test0525'@'10.80.88.17' for table 'adm_cnyloan_rate'

执行耗时   : 0 sec
传送时间   : 0 sec
总耗时      : 0.035 sec
 

四、解决方式 

一般高权限账户执行 

-- 查询权限

grant select on dataBase_name.* to user_name 

需要root解决 

-- 所有权限

grant all privileges on dataBase_name.* to user_name;

-- 刷新权限

flush privileges;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值