我正在Db2中创建一个Java存储过程。 我知道任何调用过程的人都需要被授予对该过程的'执行'权限。 但是,从Java代码中插入/更新/删除/选择表需要哪些权限?
在我发现的文档中:“如果包或例程包含静态SQL语句,则包的所有者的权限用于这些语句。如果包或例程包含动态SQL语句,则用于特权的授权标识检查取决于发出动态查询语句的包的DYNAMICRULES BIND选项的设置,以及在例程的上下文中使用包时是否发出这些语句“(https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.admin.sec.doc/doc/c0005478.html) 在另一个地方我发现:“JDBC和CLI共享相同的包。”和“创建数据库时,CLI包会自动绑定到数据库”。 我找到了这些包,比如SYSSTAT和SYSSH200。包装所有者是'SYSIBM',DYNAMICRULES是'R'。 那么这是否意味着我必须向SYSIBM授予插入/更新/删除功能?
(我现在特别关注LUW,但后来程序也需要在Z上的Db2上运行。)
感谢您提供的任何见解!
答案 0 :(得分:0)
您需要为调用存储过程的授权标识授予CRUD权限。没有为外部存储过程创建包,因此您引用的讨论不适用。