注册
如何授予用户truncate表权限
专栏/技术分享/ 文章详情 /

如何授予用户truncate表权限

西索 2023/07/28 2760 4 0
摘要

通常用户具有resource角色即可truncate自己创建的表,但不能truncate其他用户的表,如果要授权可以truncate其他的表,则需要更多权限(dba角色当然可以,但权限太大)。
临时处理
可以授权用户drop any table的权限(也比较大,所以是临时的),使用后回收。
达梦需要打开系统参数:
alter system set 'ENABLE_DDL_ANY_PRIV'=1 both;
才允许授权drop any table的权限。
该参数默认关闭。

存储过程解决
--创建存储过程(有truncate表权限的用户创建)
create or replace procedure p_truncate (t_name varchar(500))as
DECLARE v_sql varchar(1000);
begin
v_sql:='truncate table '||t_name;
execute immediate v_sql;
print(t_name||' truncate成功!');
end;

--授权其他用户执行存储过程权限
grant execute on p_truncate to test;

--被授权的用户调用

call sysdba.P_TRUNCATE('SYSDBA.T_INT');
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服