触发器定义者不同导致的sql异常TRIGGER command denied to user ‘XXX‘ @‘%‘ for table ‘...

Cause: java.sql.SQLSyntaxErrorException: TRIGGER command denied to user 'abcd'@'%' for table 'user'

场景如下:最近公司生产数据库有做过调整,然而数据库里user这张表里的一个字段是有触发器的,以前创建这个触发器的人是有对数据库进行读写权限的,但是现在这个触发器的定义者被人改了,改成了一个只有读权限,没有写权限的账户了。然后不管我们登录是用的root账户,或者其它有读写权限的账户,但是只要我们业务有涉及到改user里面有触发器的那个字段时,便会报上面的错误。这是因为触发器执行时,会去根据触发器的创建者的权限进行相关触发造作,比如改数据库的数据,但是这个触发器的创建者又没有写权限,那么就会报权限不足的错误,也就是上面所说的错误了。所以解决办法是将这个触发器的创建者改成有读写权限的账户就行了。

可以通过 show trigger 查看数据库的所有触发器,其中Definer便是创建者。

然后可以执行 select * from mysql.user where user='abcd'; 这句sql查看abcd这个用户的权限。

参照:

记一次触发器定义者不同导致的sql异常TRIGGER command denied to user 'XXX' @'%' for table '...

解决root用户无权限创建触发器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值