ORACLE三个用户
sys 超级管理员 sqlplus / as sysdba登录
system
scott
创建用户:
create useruser1 identified by user1
defaul tablespace Users
Temporary Tablespace Temp
Quota 50M on users;
默认使用users表空间,用于存放表等数据。 使用临时表空间Temp,主要用于排序。而且只可以使用Users表空间的50M大小的空间
系统权限:
1.授权登录 grant create session to lhp;才可以登录
2.创建表的权限: grantcreate table to lhp,这时候仍然不能创建表,为什么呢?
因为用户虽然有了创建表的权限,但是没有使用表空间的权限,因为创建好的表都是要存放在表空间中的,所以还要使用 grant unlimited tablespaceto lhp,代表可以使用
表空间无上限。用户一旦可以创建表,那么就拥有对这张表的增删改查。而不再需要授权。
3. 如果某个权限赋于了public,那么所有数据库的用户都可以有这个权限 grant create any table topublic; public是属于所有的用户的
4.revoke createtable from lhp;撤销授权
5.查询当前用户所拥有的系统权限: select * from user_sys_privs;
对象权限:谁拥有--谁授权
1.我有一张表,你可以访问吗,它可以访问吗?这就是一个对象权限
用户lisi 有表mytalble
用户wangwu想访问lisi的表mytable的数据,则必须要lisi用户授权:grantselect on mytable to wangwu;这样的话wangwu才可以访
问lisi中的表mytable;而且是只能查询可以继续授权grant insert on mytable ,update on mytable ,deleteon mytable to wangwu.
2. 把lisi用户中与表mytable有关的所有对象权限都授权与wangwu: grant all on mytable to wangwu;这时候wangwu就可以对表
mytable做任何操作了。
撤销: revoke all on mytable from wangwu;
3.oracle对权限的管理非常严格。可以具体到列 grant update(name) onmytable to lisi;将mytable的name字段的修改权限授予李四。
注意:控制到列的只有 插入和更新权限,查询和删除是不行的。
4.可以查到当前用户可以拥有那些对象权限。
select * from user_tab_privs以查到当前用户对表拥有那些对象权限。
select * from user_col_privs可以查询到具体到列的权限。
权限的传递:
1.系统权限的传递
A 用户使用 grant alter anytable to B把 alter any table的权限授予B用户,B用户只是拥有权限,但是不能再传递给其他用户。只有
带着管理权限的话才可以 grant alter any table to B with admin option;带有管理选项的。
2.对象权限的传递
谁创建谁拥有 grant select on mytable with grant option;带有授权选项。这时候授予权限的用户可以把这个权限再次分配到其他用
户。
角色
创建角色:create rolemyrole;
给角色授权: grant create session to myrole;
删除角色: droprole myrole;
有些系统权限不能授予角色:如unlimited tablespace。
下面的权限中:
Create table create any table
Alter table alter any table
Drop table drop any table
没有Alter table和Drop table权限,因为一旦授予createtable权限后就拥有了对表的所有操作权限。
表是属于一个用户的,而角色不属于。
Oracle下的三种验证机制:(监听服务—>实例服务)
1. 操作系统验证 (我的电脑右击管理打开组,组里有一个ora_dba这是安装了oracle自动加入的一个用户。最好删除掉)比较
危险,一般要删除掉,要不然都可以一管理员的进入。
conn / as sysdba 和 conn aa/ee as sysdba登录是一样得
2. 密码文件验证 必须输入正确的密码才可以进入。如果密码文件丢失。该怎么办? 把原来的oracle\product\10.2.0\db_1
\database\PWDorcl.ora文件删除重新生成即可
具体做法:删除E:\oracle\product\10.2.0\db_1\database\PWDorcl.ora文件。重新生成:C:\Users\Victor>orapwd
file=E:\oracle\product\10.2.0\db_1\database\PWDorcl.orapassword=oracle entries=10
生成成功后重新登录 connsys/oracle as sysdba即可
可以执行:select * fromv$pwfile_users;查询PWDorcl.ora文件中存放的特殊用户
3. 数据库验证(普通用户采用的验证方式)
windows下的验证机制:
启动监听服务:lsnrctl start
启动oracle实例 oradim-starup -sid orcl
Linux下的验证机制:
启动监听服务:lsnrctl start
Sys登录: connsys/oracle as sysdba
启动oracle实例 startup