今天一个宁波项目,要建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,还有这么多的学问。本来想以角色来实现,结果这样以来又
得重来了,要学习的东西实在太多了啊!