如何在所有表上为用户授予选择权限?

时间:2012-09-18 18:06:24

标签: db2

我的DB2数据库中有一个用户,我想为给定模式的所有表和视图授予选择权限。关于如何将其作为一个SQL语句的任何想法?

1 个答案:

答案 0 :(得分:7)

为了将select选择授予给定用户,您必须为每个表“生成”一个句子并查看给定的模式。您可以通过CLP执行此操作,如下所示:

db2 -x "select 'grant select on table ' || rtrim(tabschema) || '.' || rtrim(tabname) || ' to user JOHN_DOE' from syscat.tables where tabschema like 'FOO%' and (type = 'T' or type = 'V')" | db2 +p -tv

此命令行将为以FOO开头的任何模式的所有表(T)和视图(V)生成用户JOHN_DOE的授权。

如果你有很多表,输出将非常大,内部缓冲区将被填充。通过为较小的表集生成授权来重新发出该命令。

如果您不确定要执行的是什么,请发出上一个没有最终部分的命令(| db2 + p -tv),这将在标准输出中写入命令。但是,这部分是最重要的,因为这会执行生成的输出。

有关详细信息,请查看信息中心或我的博客http://angocadb2.blogspot.com/2011/12/ejecutar-la-salida-de-un-query-en-clp.html(西班牙文)