关闭

Oracle权限控制笔记

640人阅读 评论(0) 收藏 举报

系统权限

三个默认用户:
用户   密码
sys(网络管理员) change_on_install [as sysdba](连接数据库所用)
system(本地管理员) manager
scott(普通用户) tiger
上面为oracle9i中的用户密码,如果是10i则前两个用户由自己在安装时指定。


创建自己的用户
出现协议适配器错误:启动两个服务(监听、实例)
通过命令启动以上两个服务:
监听:lsnrctl start (监听名称,可不写)
实例:oradim -starup -sid orcl


1、通过超级用户登录:
sqlplus [username]/[password] as sysdba  此用户为"sys"
2、创建用户:
create user zlb identified by zlb(密码)


使用用户:
先授会话权限:
grant create session to zlb;
再登陆:
sqlplus zlb/zlb


创建表:
先分配权限:
grant unlimited tablespace to zlb; 
grant create table to zlb;
创建表:
create table mytable (id int);
插入:
insert into mytable values(1);

说明:当一个用户拥有了创建表的权限时,他就拥有了这张表所有操作的权限。

撤销表的权限:
revoke create table from zlb;
查找用户拥有哪些系统权限:
select * from user_sys_privs;

如果想把某个权限授予所有用户:
grant create any table to public;(把创建表的权限授予所有用户)


对象权限

用户之间不能相互访问;
sys有权限访问所有用户的权限。
在oracle中要通过手动提交,即当你插入一条数据时,要通过“commit”提交以下。


如果要想用户之间能够相互访问,可通过授权来实现:
grant select on mytable to lb;(表示zlb把查询表的权限授予lb),其他的增删改权限授予同上。


如果想把所有的权限授予lb,写法为:
grant all on mytable to lb;
撤销所有权限:revoke all on mytable from lb;


查找用户拥有哪些表权限:
select * from user_tab_privs;


断开连接:disconn;启用连接:connzlb/zlb


权限可以控制到列上,如:
grant update(id) on mytable to lb;
把更新字段“id”的权限授予lb
注意:查询和删除不能控制到列


查看列的权限:
select * from user_col_privs;


DDL:对表的操作语言
DML:增删改查(只有DML中的插入、更新、删除在编写完SQL之后要对其进行“commit”提交)
DCL:权限控制语言


权限传递

系统权限下:

sys把管理的权限授予zlb,因此zlb就拥有的管理的权限,zlb也可以再把此管理权限授予lb,如:
sys将管理权限授予zlb:
grant alter any table to zlb with admin option;
zlb将管理权限授予lb:
grant alter any table to lb with admin option;

对象权限下:

权限授予语句:
在zlb用户下:
grant select On table to lb with grant option;zlb将查询table表的权限授予lb,并且,把此权限的管理权也授予了lb



角色权限

创建角色:
create role myrole;
授权:
grant create table to myrole;
授权:
grant create table to myrole;
创建用户:
create user zhangsan identified by zhangsan;
将此用户授予角色
grant myrole to zhangsan;
这样的话此用户就拥有了角色中的所有权限


有些权限级别很高,只能单独授予用户,只能授予角色,如:
grant unlimited tablespace to myrole;将执行失败


权限说明:

create table:为自己创建表
create any table:不仅为自己,也可以为别的用户创建表
修改表/删除表:不存在alter table/drop table,只有alter any table/drop any table.因为当用户有了create table的权限时,则已经表示他可以对此表进行任意的操作,所以,修改和删除自己的表权限语句就不存在了。



表是属于某一个用户,而角色是公共的,不属于任何一个用户


丢失管理员密码怎么办

普通用户:

可以通过sys用户去修改普通用户密码
如:通过sys用户修改zlb的密码:
alter user zlb identified by zlb123;

sys用户:

如果我把原有口令文件删掉了,路径为:
E:\oracle\ora92\database\pwdora9i.ora;
创建密码文件:
orapwd file=E:\E:\oracle\ora92\database\pwdora9i.ora password=sys entries=10(指定密码文件中可以放多少特权用户);

之后我们可以查看密码文件中有多少特权用户:
select * from v$pwfile_users;



数据库的是三种验证机制,依次为:

1、操作系统验证:

拥有sysoper和sysdba权限的用户,默认情况下为安装数据库时以该计算机用户名自动创建的,因此在登录时可以不输入用户名密码也可登陆进去;如果把此用户删除,则进行下一步验证。

2、密码文件验证:

拥有sysoper和sysdba权限的用户,如:sys用户

3、数据库验证(普通用户使用)


创建用户:

create user abc(用户名)
identified by abc(密码)
default tablespace users(默认表空间)
Temporary tablespace temp(临时表空间,支持排序)
quota 50M on users(在默认表空间中所使用的空间,即限额;如果是没有限制,则把50M改为unlimited)
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:213247次
    • 积分:4010
    • 等级:
    • 排名:第8131名
    • 原创:114篇
    • 转载:143篇
    • 译文:0篇
    • 评论:32条
    文章分类
    最新评论