mysql执行存储过程中报权限不足的错误解决方法
mysql执行存储过程中报权限不足的错误解决方法
李忘生 发表于3年前
mysql执行存储过程中报权限不足的错误解决方法
  • 发表于 3年前
  • 阅读 17
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

由于对mysql了解不够透彻,导致对definer问题查了好久才解决问题
记录自己的一些理解!
问题描述:
在数据库写,为一个表写了一个触发器,此触发器调用一个存储过程;由公司写的一个c程序自动往该表写入数据,通过触发器转换成业务相关数据;同过root@localhost连接数据库,但提示192.168.2.%不存在
问题查找:
登录数据库,show procedure status\G 发现procedure的definer都是root@192.168.2.%
问题解决:
方法一:修改存储过程的definer
       update mysql.proc set definer='root@localhost ' where db='db_name';
方法二:修改sql security
       sql secuirty的值决定了调用存储过程的方式,取值 :definer或者invoker
       definer:在执行存储过程前验证definer对应的用户如:root@192.168.2.%是否存在,以及是否具有执行存储过程的权限,若没有则报错
        invoker:在执行存储过程时判断inovker即调用该存储过程的用户是否有相应权限,若没有则报错。
       修改语法:
        alter procedure pro_name sql security invoker;

ps: 在创建时指定sql security 
    create procedure pro_name(params....)
    sql security definer|invoker
    begin
     .....
    end;

共有 人打赏支持
粉丝 6
博文 20
码字总数 19386
×
李忘生
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: