使用的Informix我可以对表grant select等;

grant select on 'dba'.mytable to someuser as dba;

我怎样才能对数据库中的所有表执行此?

有帮助吗?

解决方案

有不是一个简单的方法来做到这一点(在任一SQL标准或在Informix中),但它通常不是必需的,因为该特定的权限通常缺省授权。不过,我想,其实你希望做更多的一般操作过了,想知道什么选择有。

根据你的目标是做什么,以及如何你有你的系统设置,您可以通过多种方式实现自己的目标。

蛮力 - 直接回答质疑

 SELECT 'GRANT SELECT ON "' || TRIM(owner) || '".' || TRIM(tabname) ||
        ' TO someuser AS dba;'
     FROM "informix".systables
     WHERE tabid >= 100;

从该采取输出,并将其馈入的程序。我使用 SQLCMD ,在作业,尤其是因为它不产生不想要的输出:

sqlcmd -d dbname -e "
 SELECT 'GRANT SELECT ON \"' || TRIM(owner) || '\".' || TRIM(tabname) ||
        ' TO someuser AS dba;'
     FROM "informix".systables
     WHERE tabid >= 100;" |
sqlcmd -d dbname -f -

需要额外反斜杠来解决该壳。该“-f -”选项并非绝对必要,但要明确的是,第二SQLCMD会从标准输入读取。如果使用DB-Access,您不必担心它所产生的空话 - 这是我首先写SQLCMD的原因

显然,这种解决方案可以很容易地编写脚本和推广 - 你就必须要小心你使用引号

使用角色

另一种方法是创建一个具有所需的所有权限的角色,然后授予为要求的角色给用户。这样做的缺点是,你的软件需要设置的作用,使连接人有特权。一种可能性是设置为用于每个用户的默认角色选择 - 唯一的作用。

使用服务器工作室Java版

SSJE 具有特权的管理工具来简化这一任务。

使用开放式联系太

OAT 有工具来帮助权限管理。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top