互联网服务Db2只读权限

db2 如何给普通用户某个schema下所有表的只读权限?

db2 如何给普通用户某个schema下所有表的只读权限,类似oracle中的select any table权限?

参与18

3同行回答

atpeace331atpeace331数据库管理员银行
我这边的一般做法是:1、创建一个与 schema 相对应的角色 ROLE12、将该 schema 中的所有表的 select 或 insert 或 update 或 delete等特权赋予到这个角色 ROLE1 3、将角色 ROLE1 赋予需要的普通用户...显示全部

我这边的一般做法是:
1、创建一个与 schema 相对应的角色 ROLE1
2、将该 schema 中的所有表的 select 或 insert 或 update 或 delete等特权赋予到这个角色 ROLE1 
3、将角色 ROLE1 赋予需要的普通用户

收起
银行 · 2020-01-02
  • 创建角色这个我清楚,但您指的insert/update/delete等的特权指的什么权限?db2中特权指的不是4个实例权限10个数据库权限么?我刚接触db2,请您不要介意
    2020-01-06
  • 特权是 privileges,它不包括实例级别的那四个权限。特权,分为 数据库特权 和 数据库对象特权。select 或 insert 或 update 或 delete 主要是表、views、nickname的 特权,我们一般把 schema 中所有表的 select 特权分配给只读角色,然后将这个只读角色分配给需要的用户;把schema 中所有表的 insert、update、delete 特权分配给写角色,将写角色分配给需要在 schema下增删改查的应用用户。
    2020-01-06
  • 好的谢谢,我应该理解您的意思了
    2020-01-15
tongshuaitongshuai数据库工程师北京新数科技有限公司
DB2里给表‘select’权限只能针对表,不能针对schema。如果要给某个schema下的所有表授只读权限可以先查‘syscat.tables’表将某个schema的表全部查出来,然后全部通过grant select on TABLE_NAME to user USER_NAME。来授权,每个表一条授权语句。所以可以搞个循环脚本...显示全部

DB2里给表‘select’权限只能针对表,不能针对schema。如果要给某个schema下的所有表授只读权限可以先查‘syscat.tables’表将某个schema的表全部查出来,然后全部通过
grant select on TABLE_NAME to user USER_NAME。
来授权,每个表一条授权语句。所以可以搞个循环脚本去跑。

收起
互联网服务 · 2020-01-02
johncyjjohncyj其它农信
使用此脚本:db2 connect to $1rm -f table.txtdb2 grant connect on database to user $2db2 -x "select TABSCHEMA,tabname from syscat.tables with ur" > table.txtcat table.txt|while read schema tabnamedodb2 grant select on table $schema.$tabname to user $...显示全部

使用此脚本:
db2 connect to $1
rm -f table.txt
db2 grant connect on database to user $2
db2 -x "select TABSCHEMA,tabname from syscat.tables with ur" > table.txt
cat table.txt|while read schema tabname
do
db2 grant select on table $schema.$tabname to user $2
done

如果需要指定某个schema,修改一下脚本里面的 $schema 这个变量就行。
执行:sh xxx.sh dbname xxxuser
执行完毕后,如果连接或查询报错,看具体的报错信息(一般是某些包没有赋权限),再赋予相关包的权限给此用户即可

收起
银行 · 2020-01-02
浏览6111

提问者

db2xiaobai
数据库管理员ibm

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2020-01-02
  • 关注会员:4 人
  • 问题浏览:10463
  • 最近回答:2020-01-02
  • X社区推广