zoukankan      html  css  js  c++  java
  • 关于mysql存储过程的definer的问题

    由于对mysql了解不够透彻,导致对definer问题查了好久才解决问题 
    记录自己的一些理解! 
    问题描述: 
    在数据库写,为一个表写了一个触发器,此触发器调用一个存储过程;由公司写的一个c程序自动往该表写入数据,通过触发器转换成业务相关数据;同过root@localhost连接数据库,但提示192.168.2.%不存在 
    问题查找: 
    登录数据库,show procedure statusG 发现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

  • 相关阅读:
    uva 10280(欧拉函数)
    uva 11121(-2进制)
    uva 10673(扩展欧几里德)
    uva 106(勾股定理)
    uva 128(简单题)
    Codeforces Round #238 (Div. 1) 解题报告
    2018(1)系统分析/需求分析
    2015(1)进度管理/时间管理
    序列图
    [转贴] 软件测试职业发展的 A 面和 B 面
  • 原文地址:https://www.cnblogs.com/olmlo/p/3614064.html
Copyright © 2011-2022 走看看