暂无图片
分享
czxin788
2020-08-01
怎么让oracle数据库的用户只有dml权限,没有DDL权限

目前,oracle有个用户user1,被授予的是connect和resource两个角色。
但现在有个需求,就是想让user1对user1下的表只有dml(即insert、update、delete、select)权限,而没有DDL权限(尤其是不能有alter改表结构的权限)。
请问这个需要怎么解决。

收藏
分享
5条回答
默认
最新
czxin788

另外,DDL权限授予另外一个用户user2,通过user2来改user1的表结构。

暂无图片 评论
暂无图片 有用 0
始于脚下

你这个是要限制user1用户自己只有对自己user1用户下的增删改吗?这个自己用户对自己用户底下的对象是有所有操作权限的,应该还没法限制,要是其他用户之间互相限制,可以精细化权限管理,dml操作通过grant select,insert,delete,update on user1.xxx to user2; ddl操作可以通过grant alert table to xxx,反之用revoke撤回相应权限。

暂无图片 评论
暂无图片 有用 0
文成

通过触发器实现

暂无图片 评论
暂无图片 有用 0
肖杰

触发器可以做到你的需求,很简单,几行代码即可,下面是我现在用的一个核心表不让delete的触发器:

CREATE OR REPLACE NONEDITIONABLE TRIGGER trg_no_del
before delete on tablename
begin
if ora_login_user not in (‘SYS’) THEN
raise_application_error(-20002,‘cannot delete!’);
end if;
end;

暂无图片 评论
暂无图片 有用 0
czxin788
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏