[数据库][DB2]数据库对象授权处理

DB2 V10及以上版本加强了数据库对象权限管理,通常只有创建者有较多权限,其他用户需通过grant命令授予权限。当遇到操作权限不足的错误时,可以使用具有权限的用户对目标用户进行授权。若要对所有用户授权,可对public赋权。这里提供了一份全数据库对象赋权的脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在 DB2 V10 以后的版本,对所有的数据库对象的授权开始严格管控起来,通常的只有创建对象的用户才能拥有较多的操作权限,而别的认证用户往往需要主动显示赋权,否则将报出以下错误信息:

SQL0551N  "JANE" does not have the privilege to perform operation "SELECT" on object "AS.KBPSZ".
SQL0552N  "JANE" does not have the privilege to perform operation "INSERT" on object "AS.KBPSZ".
SQL0553N  "JANE" does not have the privilege to perform operation "UPDATE" on object "AS.KBPSZ".
SQL0554N  "JANE" does not have the privilege to perform operation "ALTER" on object "AS.KBPSZ".
SQL0555N  "JANE" does not have the privilege to perform operation "INDEX" on object "AS.KBPSZ".
SQL0556N  "JANE" does not have the privilege to perform operation "DELETE" on object "AS.KBPSZ".
SQL0557N  "JANE" does not have the privilege to perform operation "REFERENCES" on object "AS.KBPSZ".
SQL0558N  "JANE" does not have the privilege to perform operation "BIND" on object "AS.KBPSZ".
SQL0559N  "JANE" does not have the privilege to perform operation "EXECUTE" on object "AS.KBPSZ".
SQL0560N  "JANE" does not have the privilege to perform operation "ALTERIN" on object "AS.KBPSZ".
SQL0561N  "JANE" does not have the privilege to perform operation "DROPIN" on object "AS.KBPSZ".
SQL0562N  "JANE" does not have the privilege to perform operation "CREATEIN" on object "AS.KBPSZ".
SQL0563N  "JANE" does not have the privilege to perform operation "CONTROL" on object "AS.KBPSZ".

此时需要使用grant命令来赋权。使用拥有权限的授权用户来对需要赋权的用户赋权

    db2 grant <权限> on  <对象种类> <对象名> to [user] <用户>
    eg. db2 grant select on table as.kbpsz to user jim

权限词说明:

特权名称相关对象描述
CONTROL表、视图、索引、包、别名、不同的类型、用户定义函数、序列提供对对象的全部权限。拥有这种特权的用户还可以向其他用户授予或撤消对对象的特权。
DELETE表、视图允许用户从对象中删除记录。
INSERT表、视图允许用户通过 INSERT 或 IMPORT 命令将记录插入对象中。
SELECT表、视图提供使用选择语句来查看对象内容的能力。
UPDATE表、视图允许用户使用更新语句修改对象中的记录。
ALTER允许用户使用更改语句更改对象定义。
INDEX允许用户使用创建索引语句在对象上创建索引。
REFERENCES提供在对象上创建或删除外键约束的能力。
BIND允许用户重新绑定现有的包。
EXECUTE包、过程、函数、方法允许用户执行包和例程。
ALTERIN模式允许用户修改模式中的对象定义。
CREATEIN模式允许用户在模式中创建对象。
DROPIN模式允许用户删除模式中的对象。

如果需要对全部用户处理,赋权给public就可以了。

    db2 grant control on as.demo_table to public

附上全数据库对象赋权的脚本:

#!/bin/sh
# 只能在inst用户下执行

db2 CONNECT TO dbDemo
# 表 & 视图
TBS=` db2 -x "SELECT CHAR( RTRIM(TABSCHEMA) || '.' || TABNAME , 120) FROM SYSCAT.TABLES WHERE TABSCHEMA IN ( SELECT SCHEMANAME FROM SYSCAT.SCHEMATA WHERE DEFINERTYPE = 'U')" `
# 函数 & 存储过程
FUNCS=` db2 -x "SELECT CHAR(RTRIM(FUNCSCHEMA) || '.' || FUNCNAME, 80) FROM SYSCAT.FUNCTIONS WHERE FUNCSCHEMA IN ( SELECT SCHEMANAME FROM SYSCAT.SCHEMATA WHERE DEFINERTYPE = 'U') " `
# 序列
SEQS=` db2 -x "SELECT CHAR( RTRIM(SEQSCHEMA) || '.' || SEQNAME, 80) FROM SYSCAT.SEQUENCES WHERE  SEQTYPE = 'S'  AND SEQSCHEMA IN ( SELECT SCHEMANAME FROM SYSCAT.SCHEMATA WHERE DEFINERTYPE = 'U')" `

for t in ${TBS[@]}; do db2 GRANT CONTROL ON $t TO PUBLIC ; done
for t in ${FUNCS[@]}; do db2 GRANT EXECUTE ON FUNCTION $t TO PUBLIC ; done
for t in ${SEQS[@]}; do db2 GRANT USAGE ON SEQUENCE $t TO PUBLIC ; done

db2 CONNECT RESET
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值