oracle创建用户.docx
《oracle创建用户.docx》由会员分享,可在线阅读,更多相关《oracle创建用户.docx(9页珍藏版)》请在冰豆网上搜索。
![oracle创建用户.docx](https://file1.bdocx.com/fileroot1/2023-2/3/75b1da5e-38c6-4848-bae3-3e2619981711/75b1da5e-38c6-4848-bae3-3e26199817111.gif)
oracle创建用户
☐角色概述
角色是Oracle引入的权限的集合,通过将各种权限赋予角色,使得权限的赋予和回收非常方便,尤其是对于一个大的数据库系统中有很多不同的数据库用户,使用角色可以很好的减少DBA的用户权限的管理
☐角色是数据库各种权限的集合,使用角色可以方便的管理数据库特权,角色可以赋予其他用户也可以赋予其他角色,下图形象的说明了角色的作用。
☐创建角色
✓创建角色的语法格式,如下所示。
CREATEROLErole_name[NOTIDENTIFIED|IDENTIFIED{
BYpassword|EXTERNALLY|GLOBALLY|USINGpackage}]
☐下面详细介绍各个参数的含义:
✓role_name:
角色名字
✓NOTIDENTIFIED:
:
在激活角色时不需要密码验证。
✓IDENTIFIED:
在激活角色时需要密码验证。
✓BYPASSWORD:
设置激活角色的验证密码。
✓USINGpackage:
创建应用角色,该角色只能由应用通过授权的package激活。
✓EXTERNALLY:
说明角色在激活前,必须通过外部服务如操作系统或第三方服务授权。
✓GLOBALLY:
当使用SETROLE激活角色时,用户必须通过企业路径服务授权来使用角色。
☐创建角色
✓示例:
创建角色mk_clerk,该角色不需要任何口令标识。
SQL>connectsystem/oracle@orcl
已连接。
SQL>createrolemk_clerk;
✓创建角色at_clerk,该角色在激活时需要口令标识。
SQL>createroleat_clerk
2identifiedbyrmb;
创建角色manager,该角色使用外部服务来标识。
☐修改角色
✓示例:
将角色AT_CLERK的验证方法改为不需要任何标识。
SQL>alterroleat_clerk
2notidentified;
✓将角色MANAGER的验证方法改为需要密码标识。
SQL>alterrolemanager
2identifiedbyrmb;
☐赋予角色权限
我们知道角色是权限的集合,所以在创建了角色后,就需要将各种权限赋予该角色,赋予角色权限的语法格式如下所示。
GRANT权限|角色TO角色名
✓为角色CLERK赋予权限
SQL>grantcreatesession,selectanytable,createview
toat_clerk;
✓将权限和角色AT_CLERK授予角色MANAGER
SQL>grantcreateanytable,at_clerk
tomanager;
☐赋予用户角色
我们知道角色是权限的集合,所以在创建了角色后,就需要将各种角色赋予用户,或赋予所有用户(PUBLIC),将角色赋予用户的语法格式如下所示。
GRANTrole[,role]……
TO{user|role|public}|[,{user|role|public}]……
[WITHADMINOPTION]
参数含义如下所示。
参数解释
☐role:
赋予用户的角色名(如多个角色,则用逗号隔开)。
☐user:
被赋予角色的用户(如多个用户用逗号隔开)
☐PUBLIC:
将角色赋予所有用户
☐WITHADMINOPTION:
被赋予该角色的用户或角色可以继续将该角色赋予其他用户或角色。
示例:
创建一个新用户,然后将角色赋予该用户
✓SQL>createusermymanager
identifiedbymy12#;
✓SQL>grantat_clerk
tomymanagerwithadminoption
☐回收和删除角色
回收用户CLERK的AT_CLERK角色
SQL>revokeat_clerkfrommymanager;
☐删除角色AT_CLERK
SQL>droproleat_clerk;
☐将角色授予所有用户。
SQL>grantmanagertopublic;
☐回收授予PUBLIC的MANAGER角色
SQL>revokemanagerfrompublic;
☐权限的概念和分类
权限是执行特殊SQL语句或访问其他用户拥有的对象的权利,这些权利包括:
连接数据库、维护表空间、改变系统状态、创建表、从用户表中选择数据行、执行存储过程等。
☐Oracle将权限分为系统权限和用户权限。
✓系统权限:
系统权限允许用户执行一个或一类特殊的数据库操作,如创建数据库、创建用户、创建与维护表空间以及管理会话等。
对象权限:
对象权限是用户维护数据库对象的权利,如维护表、视图、序列号、存储过程、函数等。
☐几种系统权限
下面我们介绍常用的几类系统权限。
☐1.与索引相关。
CREATEANYINDEX:
创建任何模式中对象的索引。
ALTERANYINDEX:
修改任何模式的索引。
DROPANYINDEX:
删除任何模式的索引。
说明:
没有CREATEINDEX的权限。
在CREATETABLE权限中包含了CREATEINDEX的权利。
☐2.与表相关。
CREATETABLE:
在当前模式中创建表。
CREATEANYTABLE:
在任何模式中创建表。
ALTERANYTABLE:
修改任何模式中的表。
DROPANYTABLE:
删除任何模式中的表。
SELECTANYTABLE:
查看任何模式中的表数据。
UPDATEANYTABLE:
修改任何模式中的表数据。
DELETEANYTABLE:
删除任何模式中的表。
说明:
具有CREATETABLE权限的用户自然拥有删除该表对象的权限,其他如CREATEPROCEDURE、CREATEFUNCTION类似。
在创建表时必须为表分配表空间配额,或者对表空间具有无限制使用权利,如UNLIMITEDTABLESPACE。
☐3.与会话相关。
CREATESESSION:
建立数据库会话的权利。
ALTERSESSION:
修改数据库会话的权利。
注意:
一个新用户创建后,首先需要授予CREATESESSION权限它可以访问数据库。
☐4.与表空间相关。
CREATETABLESPACE:
创建表空间。
ALTERTABLESPACE:
修改表空间。
DROPTABLESPACE:
删除表空间。
UNLIMITEDTABLESPACE:
允许使用所有表空间的权限。
☐Oracle将权限分为系统权限和用户权限。
✓系统权限:
系统权限允许用户执行一个或一类特殊的数据库操作,如创建数据库、创建用户、创建与维护表空间以及管理会话等。
对象权限:
对象权限是用户维护数据库对象的权利,如维护表、视图、序列号、存储过程、函数等。
☐授予系统权限
要授予用户系统权限需要使用GRANT指令的SQL语句,被授予了权限的用户在一定授权下可以继续将系统权限赋予其他用户。
下面是赋予用户权限的语法格式。
GRANT{system_privilege|role}
[,{system_privilege|role}]……
TO{user|role|PUBLIC}
[,{user|role|PUBLIC}]……
[WITHADMINOPTION]
☐创建两个用户jane和larry并赋予用户系统权限。
☐SYSDBA和SYSOPER系统特权
Oracle提供了两个特殊的系统权限,即SYSDB权限和SYSOPER权限,在做系统维护时建议使用这两种系统权限登陆数据库。
用户通过SYSDBA连接到数据库时,它具有对数据库的一切特权。
下面是两种系统特权的典型数据库操作。
✓SYSDBA系统特权相关的操作:
SYSOPERPRIVILEGESWITHADMINOPTION:
具有SYSOPER所具有的操作,并且可以将这些特权赋予其他用户。
CREATEDATABASE:
创建数据库。
ALTERDATABASEBEGIN/ENDBACKUP:
将数据库置于备份状态。
RESTRICTEDSESSION:
设置会话限制。
RECOVERDATABASEUNTIL:
介质恢复数据库到UNTIL指定的状态。
✓SYSOPER系统特权相关的操作:
STARTUP:
启动数据库。
SHUTDOWN:
关闭数据库。
ALTERDATABASEOPEN|MOUNT:
将数据库切换到打开|挂起状态。
ALTERDATABASEBACKUPCONTROLFILETO:
备份控制文件。
RECOVERDATABASE:
介质恢复数据库。
ALTERDATABASEARCHIVELOG:
将数据库设置为归档模式。
☐回收用户权限
如果需要限制某个用户的权限可以回收权限,使用REVOKE指令,回收用户权限的语法格式如下所示。
REVOKE{system_privilege|role}
[,{system_privilege|role]……
FROM{user|role|PUBLIC}
[,{user|role|PUBLIC}]……
示例
1.查询用户JANE和LARRY的系统权限。
SQL>select*
2fromdba_sys_privs
3wheregranteeIN('JANE','LARRY')
4*orderbygrantee
2.回收用户LARRY的系统权限。
SQL>connectsystem/oracle@orcl
已连接。
SQL>revokecreatesession,selectanytable
2fromlarry;
3.回收级联的用户权限的一点说明
甲--->已--->丙
甲-X-->已--->丙
☐授予对象权限
和系统权限相对应的是对象权限,对象包括表、视图(物化视图)、序列号和存储过程等。
在这些数据库对象上实现某种特殊的行为的权限称为对象权限,如对于一个表可以更改表的结构,删除表或更新表中的数据行等。
Oracle的对象权限包括:
ALTER、DELETE、EXECUTE、INDEX、INSERT、REFERENCES、SELECT和UPDATE。
而这些对象权限适用于不同的数据库对象。
☐给出对象授权的语法格式:
GRANT{object_privilege[(column_list)]
[,object_privilege[(column_list)]]……
|ALL[PRIVILEGE]
ON[schema.]object
TO{user|role|PUBLIC}[,{user|role|PUBLIC}]……
[WITHGRANTOPTION]
✓GRANT:
授权关键字。
✓Object_privilege:
对象权限
✓Column_list:
对象权限操作的列的列表。
✓All:
将当前用户的某个数据库对象的所有权限赋予新用户。
✓Onobject:
说明具体的数据库对象,如表或存储过程。
Withgrantoption:
新用户可以继续授权
☐示例:
把SCOTT用户的EMP表象权限UPDATE赋予新用户LARRY
SQL>connectscott/tiger@bjyzz
已连接。
SQL>grantupdateonemp
2tolarrywithgrantoption;
☐把对表DEPT的列的UPDATE对象权限赋予用户sophie。
SQL>grantupdate(dname,loc)ondepttosophie;
☐使用数据字典USER_COL_PRIVS_MADE查看相关列的权限赋予信息。
SQL>select*
☐2fromu回收对象权限
出于安全的考虑,如果一个用户不需要某种对象权限可以使用REVOKE指令回收用户的对象权限。
如下是回收对象权限的语法格式:
REVOKE{object_privilege
[,object_privilege]……
|ALL[PRIVILEGE]}
ON[schema.]object
FROM{user|role|PUBLIC}
[,{user|role|PUBLIC}]……
[CASCADECONSTRAINTS]
✓示例:
回收用户LARRY对EMP表的UPDATE对象权限
SQL>connscott/tiger@bjyzz
已连接。
SQL>revokeupdateonemp
2fromlarry;
ser_col_privs_made;