【DB2】普通用户最小查询权限分配

时间:2023-01-20 08:52:25

1. 通过实例用户或者有dbadm权限的用户连接数据库

db2 connect to <db-name>

2. 分配普通用户连接权限
db2 "grant connect on database to user db-user"

3. 分配用户使用默认workload权限
否则报 SQL5193N 错误
db2 "grant usage on workload SYSDEFAULTUSERWORKLOAD to user db2read"

 

4. 使用图形化工具查询表时,可能报错
db2 "grant execute on package nullid.syssh200 to user db-user"

 

当在数据库多时,可以使用下面语句生成grant权限语句
先将语句进行测试,测试通过后,没问题,然后执行语句
db2 list db directory | grep -i "Database alias" | awk '{print "db2 connect to " $4 "; db2 -x \"select '\''grant select on table '\'' || trim(tabschema) || '\''.'\'' || trim(tabname) || '\'' to user db2read;'\'' from syscat.tables\" > grant_db.sql"}'

输出类似的结果:

db2 connect to SAMPLE; db2 -x "select 'grant select on table ' || trim(tabschema) || '.' || trim(tabname) || ' to user db2read;' from syscat.tables" > grant_db.sql

执行上面的语句,确认grant_db.sql无误之后,执行下面语句生成执行语句

db2 connect to SAMPLE; db2 -x "select 'grant select on table ' || trim(tabschema) || '.' || trim(tabname) || ' to user db2read;' from syscat.tables" > grant_db.sql;db2 -tvf grant_db.sql

然后执行生成的语句,即可。

 

后续会写个脚本完成,该功能。