网站首页 > 技术文章 正文
Oracle是一个多用户数据库,具有功能强大的访问控制系统,可以为不同用户指定允许的权限。用户管理包括管理用户账户、权限等。
1.账户管理
Oracle提供了许多语句,这些语句可以用来管理包括创建用户、删除用户、密码管理和权限管理等内容。Oracle数据库的安全性,需要通过账户管理来保证。
根据每个用户访问Oracle数据库的需求不同,Oracle需要赋予用户不同的操作权限,这是数据库管理员经常遇到的问题。如果管理员对用户权限分配不合理,将会对数据库造成一定的安全隐患。
Oracle 中用户登录数据库的方式主要有3种:
①密码验证方式:把验证密码放在Oracle数据库中,这是最常用的验证方式,同时安 全性也比较高。
②外部验证方式:这种验证的密码通常与数据库所在的操作系统的密码一致。
③全局验证方式:这种验证方式也不把密码放在Oracle数据库中,也是不常用的验证 方式。
1.1新建普通用户
创建新用户,必须有相应的权限来执行创建操作。在Oracle数据库中,创建用户时需要特别注意用户的密码必须以字母开头。
用户可以使用CREATE USER语句创建用户。语法规则如下:
CREATE USER username IDENTIFIED BY password
OR EXTERNALLY AS certificate_DN
OR GLOBALLY AS directory_DN
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace| tablespace_group_name]
[QUOTA size|UNLIMITED ON tablespace]
[PROFILE profile]
[PASSWORD EXPIRE]
[ACCOUNT LOCK|UNLOCK]
- username表示创建的用户的名称;
- IDENTIFIED BY password表示以口令作为验证方式;
- EXTERNALLY AS certificate_DN表示以外部验证方式;
- GLOBALLY AS directory_DN表示以全局验证方式;
- DEFAULT TABLESPACE表示设置默认表空间,如果忽略该语句,那么创建的用户就存在数据库的默认表空间中,如果数据库没有设置默认表空间,那么创建的用户就放在SYSTEM表空间中;
- TEMPORARY TABLESPACE设置临时表空间或者临时表空间组,可以把临时表空间存放在临时表空间组中,如果忽略该语句,那么就会把临时文件存放到当前数据库默认的临时表空间中,如果没有默认的临时表空间,那么就会把临时文件存放到 SYSTEM的临时表空间中;
- QUOTA表示设置当前用户使用表空间的最大值,在创建用户时可以有多个QUOTA来设置用户在不同表空间中能够使用的表空间大小,如果设置成UNLIMITED,表示对表空间的使用没有限制;
- PROFILE设置当前用户使用的概要文件的名称,如果忽略了该子句,那么该用户就使用当前数据库中默认的概要文件;
- PASSWORDEXPIRE用于设置当前用户密码立即处于过期状态,用户如果想再次登录数据库必须更改密码;
- ACCOUNT用于设置锁定状态,如果设置成LOCK,那么用户不能访问数据库,如果设置成UNLOCK,那么用户可以访问数据库。
1.2修改用户信息
在Oracle数据库中,可以使用ALTER USER语句修改用户信息。具体使用的语法规则如下:
ALTER USER username IDENTIFIED
{BY password[REPLACE old_password]
| EXTERNALLY [AS certificate_DN]
| GLOBALLY [AS directory_DN]
}
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace| tablespace_group_name]
[QUOTA size|UNLIMITED ON tablespace]
[PROFILE profile]
[PASSWORD EXPIRE]
[ACCOUNT LOCK|UNLOCK]
上面的各个参数的含义和创建用户的参数含义一样。
1.3删除用户
在Oracle数据库中,可以使用DROP USER语句删除用户,具体的语法规则如下:
DROP USER username [CASCADE];
- username 为用户的名称;
- 关键字CASCADE是可选参数,如果要删除的用户中没有任何数据库对象,可以省略CASCADE关键字。
DROPUSER不能自动关闭任何打开的用户对话。而且,如果用户有打开的对话,此时取消用户,命令则不会生效,直到用户对话被关闭后才能生效。一旦对话被关闭,用户也被取消,此用户再次试图登录时将会失败。
2.权限管理
权限管理主要是对登录到Oracle的用户进行权限验证。所有用户的权限都存储在Oracle的权限表中,不合理的权限规划会给Oracle服务器带来安全隐患。数据库管理员要对所有用户的权限进行合理规划管理。Oracle权限系统的主要功能是证实连接到一台给定主机的用户,并且赋予该用户在数据库上的SELECT、INSERT、UPDATE和DELETE权限。
2.1授权
授权就是为某个用户授予权限。合理的授权可以保证数据库的安全。Oracle中可以使用GRANT语句为用户授予权限。
在Oracle中,必须是拥有GRANT权限的用户才可以执行GRANT语句。授予权限包括 授予系统权限和授予对象权限。
授予系统权限的语法如下:
GRANT system_privilege
|ALL PRIVILEGES TO {user IDENTIFIED BY password|role|}
[WITH ADMIN OPTION]
- system_privilege表示创建的系统权限名称;
- ALL PRIVILEGES 表示可以设置除SELECT ANY DICTIONARY权限以外的所有系统权限;
- {user IDENTIFIED BY password|role|}表示设置权限的对象,role代表的是设置角色的权限;
- WITH ADMIN OPTION表示当前给予授权的用户还可以给其他用户进行系统授权的赋予。
授予对象权限的语法规则如下:
GRANT object_privilege|ALL
ON schema.object
TO user|role
[WITH ADMIN OPTION]
[WITH THE GRANT ANY OBJECT]
- object_privilege表示创建的对象权限名称;如果选择ALL,则代表授予用户所有的对象权限,这个权限在使用的时候一定要注意;
- schema.object表示为用户授予的对象权限使用的对象;
- userlrole中的user代表是用户,role代表是角色;
- WITH ADMIN OPTION表示当 前给予授权的用户还可以给其他用户进行系统授权的赋予;
- WITH THE GRANT ANY OBJECT表示当前给予授权的用户还可以给其他用户进行对象授权的赋予。
2.2回收权限
收回权限就是取消已经赋予用户的某些权限。收回用户不必要的权限可以在一定程度上保证系统的安全性。Oracle中使用REVOKE语句取消用户的某些权限。
收回权限包括收回系统权限和收回对象权限。
只有数据库管理员才能收回系统权限,而且撤销系统权限的前提是当前的用户已经存在要撤销的系统权限。收回系统权限的语法规则如下:
REVOKE system_privilege
FROM user|role
使用REVOKE语句也可以收回对象权限。具体的语法规则如下:
REVOKE object_privilege|ALL
ON schema.object
FROM user|role
[CASCADE CONTRAINTS]
- [CASCADE CONTRAINTS]选项表示该用户授予其他用户的权限也一并收回。
收回系统权限和收回对象权限有不同的地方。如果撤销用户的系统权限,那么该用户授予其他用户的系统权限仍然存在;如果撤销用户的对象权限,那么该用户授予其他用户的对象权限也被收回。
2.3查看权限
在Oracle中,用户的权限存放在数据库的数据字典中,用户的系统权限存放在数据字典DBA_SYS_PRIVS中,用户的对象权限存放在数据字典DBA_TAB_PRIVS中。数据库管理员可以通过用户名查看用户的权限。
查看ANONYMOUS用户的系统权限,实现代码如下:
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='ANONYMOUS';
查看ANONYMOUS用户的对象权限,实现代码如下:
SELECT PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE='ANONYMOUS';
SELECT * FROM DBA_USERS;
SELECT * FROM ALL_USERS;
SELECT * FROM USER_USERS;
3.角色管理
角色相当于Windows操作系统中的用户组,可以集中管理数据库或服务器的权限。
3.1角色概述
数据库角色是针对某个具体数据库的权限分配,数据库用户可以作为数据库角色的成员,继承数据库角色的权限,数据库管理人员也可以通过管理角色的权限来管理数据库用户的权限。
用户和角色是不同的,用户是数据库的使用者,角色是权限的授予对象,给用户授予角色,相当于给用户授予一组权限。数据库中的角色可以授予多个用户,一个用户也可以被授予多个角色。角色是数据库中管理员定义的权限集合,可以方便地对不同用户进行权限授予。
3.2创建角色
在实际的数据库管理过程中,通过创建角色,可以分组管理用户的权限。
创建角色的具体语法如下:
CREATE ROLE role
[NOT IDENTIFIED| IDENTIFIED BY[ password]| IDENTIFIED BY
EXETERNALLY|IDENTIFIED BY GLOBALLY]
- NOT IDENTIFIED表示创建角色的验证方式为不需要验证;
- IDENTIFIED BY[ password]表示创建角色的验证方式为口令验证;
- IDENTIFIED BY EXETERNALLY表示创建角色的验证方式为外部验证;
- IDENTIFIED BY GLOBALLY表示创建角色的验证方式为全局验证。
3.3设置角色
角色创建完成后不能直接使用,还需要把角色赋予用户才能使角色生效。将角色赋予用户的具体语法如下:
GRANT role TO user
一个用户可以同时被赋予多个角色,被赋予的多个角色是否生效可以自行设置。设置的方法如下:
SET ROLE role
SET ROLE ALL
SET ROLE ALL EXCEPT role
SET ROLE NONE
- SET ROLE role表示指定的角色生效;
- SET ROLE ALL表示设置用户的所有角色都生效;
- SET ROLE ALL EXCEPT role表示设置EXCEPT后的角色不失效;
- SET ROLE NONE表示设置用户的角色都失效。
3.4修改角色
角色创建完成后,还可以修改其内容。具体的语法规则如下:
ALTER ROLE role
[NOT IDENTIFIED| IDENTIFIED BY[ password]| IDENTIFIED BY
EXETERNALLY| IDENTIFIED BY GLOBALLY]
上面的代码只能修改角色本身,如果想修改已经赋予角色的权限或者角色,则要使用GRANT或者REVOKE来完成。
3.5查看角色
用户可以查询数据库中已经存在的角色,也可以查询指定用户的角色的相关信息。
查询SYSTEM用户的角色,实现代码如下:
SELECT GRANTED_ROLE,DEFAULT_ROLE FROM DBA_ROLE_PRIVS
WHERE GRANTEE='SYSTEM';
3.6删除角色
对于不再需要的角色,可以删除。在删除角色的同时,所有拥有该角色的用户也将自动撤销该角色所授予的权限。
删除角色的语法格式如下:
DROP ROLE role
4.管理概要文件 PROFILE
Oracle数据库中的概要文件为PROFILE,它为数据库的管理带来极大的便利。
4.1PROFILE概述
PROFILE就是 Oracle数据库中的概要文件,主要用于存放数据库中的系统资源或者数据库限制使用的内容。默认情况下,如果用户没有创建概要文件,则使用系统的默认概要文件,名称为DEFAULT。
概要文件会给数据库管理员带来很大的便利,数据库管理员可以先对数据库中的用户分组,根据每一组的权限不同,建立不同的概要文件,这样便于管理用户。值得注意的是,概要文件只能用于用户,不能在角色中使用。
4.2创建概要文件
数据库中默认的概要文件为PROFILE,根据实际的需要,可以创建概要文件。 创建概要文件的语法格式如下:
CREATE PROFILE profile
LIMIT
{resource_parameters|password_parameters}
resource_parameters表示资源参数,主要包括如下:
- CPU PER SESSION:表示一个会话占用CPU的总量。
- CPU PER_CALL:表示允许一个调用占用CPU的最大值。
- CONNECT TIME:代表运行一个持续的会话的最大值。
password_parameters表示口令参数,主要包括如下:
- PASSWORDLIFE_TIME:指的是多少天后口令失效。
- PASSWORD REUSE TIME:指密码保留的时间。
- PASSWORD GRACE TIME:指设置密码失效后锁定。
4.3修改概要文件
使用ALTER PROFILE语句可以修改已经存在的概要文件,语法格式如下:
ALTER PROFILE profile
LIMIT
{resource_parameters|password_parameters}
4.4删除概要文件
对于不需要的概要文件,可以对其执行删除操作。具体的语法格式如下:
DROP PROFILE profile [CASCADE]
如果删除的概要文件已经被用户使用过,那么删除概要文件时要加上CASCADE关键词,这样用户所使用的概要文件也被撤销;如果概要文件没有被使用过,可以省略该关键词。
在Oracle中,默认的概要文件PROFILE是不能删除的。
概要文件被保存在数据字典DBA_PROFILES中,如果想查询概要文件,可以使用如下语句:
SELECT * FROM DBA_PROFILES;
猜你喜欢
- 2024-10-14 oralce用户的介绍 ora-01917:user or role
- 2024-10-14 查询所有用户的表,ORACLE下有三个视图
- 2024-10-14 Linux新手入门系列:linux下Oracle定时备份
- 2024-10-14 Oracle 设置RMAN备用用户 oracle rman全库备份
- 2024-10-14 oracle死锁介绍 oracle 死锁原因
- 2024-10-14 MySQL和Oracle相关 mysql和oracle的sql语句一样吗
- 2024-10-14 oracle账户被锁定怎么解锁 oracle账户已被锁定什么意思
- 2024-10-14 Python操作数据库(Oracle) python操作数据库的步骤
- 2024-10-14 Oracle数据库使用攻略 oracle数据库使用教程
- 2024-10-14 Oracle学习笔记三:PL/SQL developer工具安装
你 发表评论:
欢迎- 05-11FANUC修改前端目录教程
- 05-11前端分享-Set你不知道的事
- 05-11jq+ajax+bootstrap改了一个动态分页的表格
- 05-11千万级大表分页查询效率剧降,你会怎么办?
- 05-11Elasticsearch深度分页
- 05-11如何写一个简单的分页
- 05-11手速太快引发分页翻车?前端竞态陷阱揭秘
- 05-11「linux」Socket缓存是如何影响TCP性能的?
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端懒加载 (45)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)