database - 授予其他用户执行权限?
问题描述
我正在使用 Oracle 来研究数据库。现在我已经创建了表,我已经填充了它们,我已经创建了过程,触发器......现在我想创建另一个用户并授予对过程的执行,所以我编写了序列:
create user utente identified by utente;
grant create session to utente;
grant execute "procedure_name" to utente;
disc;
conn utente;
execute "procedure_name";
但是Oracle说“必须声明已识别的procedure_name”……也就是说,用户看不到该过程和所有表!
解决方案
如果这些是您运行的唯一命令,那么新用户需要在过程名称前加上其所有者:
conn utente;
execute proc_owner.procedure_name;
如果您不想每次都这样做,那么该用户可以创建一个同义词,作为一次性任务:
create synonym procedure_name for proc_owner.procedure_name;
execute procedure_name;
或者所有者可以创建一个公共同义词,并授予公共权限,如果许多用户应该能够看到它。我只会考虑为每个人真正需要的一些基本程序或功能这样做,这很少见;除非真的有必要,否则我会避免使用公共同义词,但我认为无论如何我都应该提及它们。
推荐阅读
- sql - 使用双连接查询
- javascript - Axios 错误:... .data.pipe 不是函数
- node.js - 如何使用 node12 模板使 faasd 机密可用?
- math - LDPC 码的 DVB-S2 标准中描述的编码过程的基本原理是什么?
- database - 可以在 WHERE 子句和条件 IN 中使用集合吗?
- html - 如何将 CSS 属性单独应用于多个元素
- php - Laravel Jetstream 更新未从表单触发,而是重定向到错误页面
- html - 插入后角垫表不刷新
- aws-lambda - AWS Lambda 函数根本没有被触发
- reactjs - Webpack 更新包后找不到模块