首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

一个关于Definer和Invoker的权限问题

定义者(Definer)-指的是编译存储对象的拥有者,包括包、存储过程、函数、触发器和视图。 调用者(Invoker)-指当前会话中生效的schema,不一定就是当前登录的用户。...引用Tom的实验,首先user1用户,创建如下两个存储过程,分为定义者权限,和调用者权限,并将这两个存储过程,执行权限授予user2, create or replace procedure definer_proc...接着使用user2,分别执行, SQL> exec user1.definer_proc; Current User: USER1 Session User: USER2 Current Schema:...SQL> exec user1.definer_proc; Current User: USER1 Session User: USER2 Current Schema: USER1 PL/SQL procedure...对于Definer和Invoker的含义要理解,Definer权限比较静态,Invoker权限则相对动态,通过procedures视图的AUTHID字段,可以了解对象,属于定义者还是调用者权限。

84720

更改用户host留下的坑

此问题的解决方案有两种,一是将此存储过程的安全属性由 DEFINER 改为 INVOKER ,个人不推荐这个方案,至于 DEFINER 和 INVOKER 的区别,下个章节会额外讲解。...DEFINER:由definer(定义者)指定的用户的权限来执行 INVOKER:由调用这个视图(存储过程)的用户的权限来执行 默认情况下,系统指定为DEFINER。...当SQL SECURITY属性为DEFINER时,数据库中必须存在DEFINER指定的用户,并且该用户拥有对应的操作权限及引用的相关对象的权限,才能成功执行。与当前用户是否有权限无关。...更改用户host后,要注意此用户下的各个对象的DEFINER属性。 创建视图、存储过程等对象建议将SQL SECURITY定义为DEFINER。...数据库迁移时,要注意新环境存在相关对象定义的DEFINER用户。

96510
领券