博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于mysql存储过程的definer的问题
阅读量:7045 次
发布时间:2019-06-28

本文共 781 字,大约阅读时间需要 2 分钟。

由于对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; 

 

转自:http://yunjiechao-163-com.iteye.com/blog/1300772

转载于:https://www.cnblogs.com/olmlo/p/3614064.html

你可能感兴趣的文章
datatables参数配置详解
查看>>
Composer 结合 Git 创建 “服务类库”
查看>>
Redis线程模型
查看>>
修改firefox/chrome浏览器的UserAgent
查看>>
sql 基础练习 计算7天各个时间点的总和 group by order mysql一次查询多个表
查看>>
MySQL高级-索引优化
查看>>
SQL中Group By的使用
查看>>
RateLimiter 限流
查看>>
资深设计师Tony Ventrice解析手机游戏开发的四个层次
查看>>
Swift入门篇-结构体
查看>>
Using the Eclipse Jobs-API(转载)
查看>>
GCC编译过程
查看>>
AE intersect、clip的实现
查看>>
图解使用Win8Api进行Metro风格的程序开发一----建立我们的导航架构
查看>>
iOS开发过程中使用Core Data应避免的十个错误
查看>>
I.MX6 wpa_cli 使用
查看>>
windows使用nginx实现网站负载均衡测试实例
查看>>
DotLiquid模板引擎简介
查看>>
5.Flask-Migrate
查看>>
c# 正则表代式的分组和批评模式 .
查看>>