Permissions Informix,在所有表上授予select

Permissions Informix,在所有表上授予select,permissions,informix,grant,Permissions,Informix,Grant,有了Informix,我可以在如下表上授予select grant select on 'dba'.mytable to someuser as dba; 如何在数据库中的所有表上执行此操作?没有简单的方法(在SQL标准或Informix中),但通常不需要,因为默认情况下通常会授予特定的权限。然而,我想事实上你也想做更多的一般性操作,并且想知道有什么选择 根据您的目标和系统设置方式,您可以通过各种方式实现目标 暴力-问题的直接答案 从中获取输出并将其输入到程序中。我将其用于作业,尤其是因为它不

有了Informix,我可以
在如下表上授予select

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

如何在数据库中的所有表上执行此操作?

没有简单的方法(在SQL标准或Informix中),但通常不需要,因为默认情况下通常会授予特定的权限。然而,我想事实上你也想做更多的一般性操作,并且想知道有什么选择

根据您的目标和系统设置方式,您可以通过各种方式实现目标

暴力-问题的直接答案 从中获取输出并将其输入到程序中。我将其用于作业,尤其是因为它不会生成不需要的输出:

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访问,您必须担心它生成的措辞——这就是我首先编写SQLCMD的原因

显然,这个解决方案可以很容易地编写脚本并加以推广——您只需小心使用引号

使用角色 另一个选项是创建一个具有所需所有权限的角色,然后根据需要将该角色授予用户。这样做的缺点是,您的软件需要设置角色,以便连接的人拥有该权限。一种可能是将“仅选择”角色设置为每个用户的默认角色

使用Server Studio Java Edition 具有权限管理工具以简化此任务

也使用开放式管理 具有帮助权限管理的工具

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 -