A. Oracle用户管理
1. 用户: 是在数据库中定义的一个名称,更准确地说它是账户,习惯上称其为用户,当连接到Oracle数据库时,操作人员必须提供正确的用户名和密码。
连接到数据库的用户所具有的权限是不同的,Oracle提供了一些特权用户,比如,SYSDBA或SYSOPER,这类用户主要用于执行数据库的维护操作,如启动、关闭等操作。
SYSDBA和SYSOPER的区别在于:SYSDBA不仅具备SYSOPER的所有权限,而且还可以建立数据库,执行不完全恢复。(SYSDBA比SYSOPER厉害)
在Oracle11g中,Oracle提供了默认的特权用户SYS,当以特权用户身份登录数据库时,必须带有AS SYSDBA或AS SYSOPER选项。
例如:connect sys/密码 as sysdba;
2. 忘记管理员密码:
第一步输入:sqlplus/nolog
第二步输入:connect/as sysdba
第三步输入:alter user sys identified by sys
3. 创建新用户======具有DBA权限的用户执行
- 创建一个名为test的新用户
create user test identified by 123456
default tablespace users
temporary tablespace temp
quota 3m on users;
4. 修改用户:
语法与创建用户的语法基本相似,只是把CREATE关键字替换成ALTER
alter user test identified by 密码
default tablespace users
temporary tablespace temp
quota 3m on user;
5. 解锁被锁住的用户:
使用alter user命令解除被锁定的账户。
alter user test account unlock;
6. 删除用户:
一般以dba的身份去删除某个用户,如果用其它用户去删除用户则需要具有 drop user的权限。
drop user 用户名 [cascade]
注:cascade:级联删除选项;加cascade选项,此时连同该用户所拥有的对象一起删除。
7. 用户授权======新用户是没有任何权限的, 需要dba授权
- 为刚才新创建的用户test授权
grant connect to test;
8. 用户权限
根据管理方式不同,权限分为:系统权限和对象权限。
系统权限:是在系统级对数据库进行存取和使用的机制,比如是否能连接到数据库系统(SESSION权限),执行DDL语句(如CREATE.ALTER、和DROP)等。
对象权限:指某一个用户对其他用户的表、视图等对象的操作权限。对于某些模式对象,比如簇、索引、触发器、数据库链接等没有相应的实体权限,由系统权限进行管理。
B. 角色
1.概念:角色是一个独立的数据库实体,它包括一组权限。也就是说,角色是包括一个或者多个权限的集合,它并不被哪个用户所拥有。
角色可以被授予任何用户,也可以从用户中将角色收回。
2.分类:
Qracle提供了三种标准的角色(role): CONNECT、RESOURCE和DBA。
CONNECT Role(连接角色)
=====>临时用户,特别是那些不需要建表的用户,通常只赋予他们CONNECTrole。只可以登录Oracle,不可以创建实体,不可以创建数据库结构。RESOURCE Role(资源角色)
=====>更可靠和正式的数据库用户可以授予RESOURCE role。
只可以创建实体,不可以创建数据库结构。
RESOURCE提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。
- DBA Role(数据库管理员角色)
=====>拥有所有的系统权限—-包括无限制的空间限额和给其他用户授予各种权限的能力。
SYSTEM由DBA用户拥有。 只有DBA才可以创建数据库结构。
C.授权与收权
1. 系统授权语法:
grant sys_privi | role to user | role | public [with admin option];
/*sys_privi:表示Oracle系统权限,系统权限是一组约定的保留字。
比如,若能够创建表,则为“CREATE TABLE”。
role:角色。
user:具体的用户名,或者是一些列的用户名。
public:保留字,代表Oracle系统的所有用户。
with admin option:表示可再将权限授予另外的用户。*/
为用户test授予连接和开发系统权限
grant connet,resource to test;
test可以把这两个权限授予其他用户。
grant connet,resource to test with admin option
2. 收回权限:
revoke sys_privi | role from user | role | public;
// 参数含义同grant授权。
撤销test用户的resource系统权限:
revoke resource from test;
3. 对象权限:
grant obj_privi | all column on schema.object to user | role | public [with grant option] | [with hierarchy option]
/*obj_privi:表示对象的权限,可以是alter、execute、select、update
和insert等;
role:角色名;
user:被授权的用户名;
with admin option:表示被授权者可再将系统权限授予其他的用户;
with hierarchy option:在对象的子对象(在视图上再建立视图)上授权给用户。*/
给用户test授予select、insert、update表soctt.emp的权限。
grant select,insert,delete,update on scott.emp to test;
4. 收回对象权限:
revoke obj_privi | all on schema.object from user | role | public cascade constraints
//cascade constraints:表示有关联关系权限也被撤销。
从test用户撤销scott.emp表的update和delete
revoke delete,update on scott.emp from test;