Informix中,授予对所有表选择
-
22-07-2019 - |
题
使用的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 有工具来帮助权限管理。
不隶属于 StackOverflow