oracle 之授权篇

 

今天一个宁波项目,要建boss系统。拿来一个,喜忧参半...操作系统数据库已经建好了,但是...
都没有初始化,我晕。
从头开始搞,规划并建立表空间,建立用户,授予权限;
 规划比较麻烦,我参考了杭州的系统,以100万用户计算,目前宁波的50万。以2/3杭州的空间来划分。
具体内容还是不说了,说一下遇到的问题。
总共建了3个用户:dvbcetus, dvbcetus_ed, dvbhis;
dvbcetus为主用户:为生产库。
dvbcetus_ed为副用户,用户对生产库的一些日常操作,如select, update等。但是不授予delete(DML),truncate(DDL)等权限。
dvbhis:一看也就知道了,历史数据的用户。

默认情况下这个三个用户都授予了:connect , resource两个权限,用于连接及创建对象等操作。

问题就出在在dvbcetus用户下时,要对dvbcetus_ed进行授权,但是提示错误:ora-01031 权限不足。
怪了,我自己的对象,要授权给别人,怎么会权限不足呢?
然后尝试授予create table,session 等权限,但是都没有成功。
于是新建一用户:create user test identified by kkk;
给该用户授权:grant connect to test; grant resource to test;
新建表:create table test1(name varchar2(255));
授    权:grant select any table to dvbcetus;--显示成功

很奇怪,为什么前面建的就不行呢?于是重建test用户,完全模拟系统用户:
drop user test cascade;--当用户下已经有对象存在时,需要加上cascade参数。
create user test identified by kkk default tablespace dvbcetus temporary temp ;

这时test用户也没有权限对其他用户进行授权了,即使加入了with admin option也不行。

后来查找资料,发现有这样一个授权方式:
grant grant any privileges to some_user;
我当即就意识到:找到办法了!!

敲入命令,登陆用户,授予权限,OK!
原来你新建一个用户的时候,如果用户对应的表空间不是默认的表空间,则在
你在该表空间的内容的权限授予他人的时候,自己本身也需要授权的权限。不
然你就没有授权的权限。而如果是默认的系统表空间,则好像没有这种问题。
关于更深入的细节,还要查询更多的资料来了解了。

没想到一个grant,还有这么多的学问。本来想以角色来实现,结果这样以来又
得重来了,要学习的东西实在太多了啊!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值