mysql存储过程、视图等的权限问题

看存储过程定义,
DELIMITER $$

CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    PROCEDURE `DB_U1`.`P1`()
    /*LANGUAGE SQL
    | [NOT] DETERMINISTIC
    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
    | SQL SECURITY { DEFINER | INVOKER }
    | COMMENT 'string'*/
    BEGIN
    XXX;
    END$$

DELIMITER ;
有个definer,指定存储过程属于哪个用户,SQL SECURITY指定了调用存储过程的方式,DEFINER 定义着(默认),INVOKER调用者
第一种,如果是以定义着身份执行,默认没问题,如果不是定义着,可以修改:
    update mysql.P1 set definer='root@localhost' where db='db_name';
第二种,如果是另外一个用户执行,需要满足两个条件:
    1,调用者具有调用存储过程的权限,2,存储过程拥有者本身具有执行存储过程的权限
第三种,修改存储过程的默认调用者权限,lter procedure P1 sql security invoker,或者创建过程时候指定

以上同样适用于视图,触发器,事件等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝闻道-夕死可矣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值