目录
提示:关于新用户的创建相关的操作请看上面链接里面的《Oracle数据库系统安全管理(一)》
1.权限管理
为了使新建的用户可以进行基本的数据库操作,如登录数据库,查询表,创建和删除表等操作,那么需要给该新用户授予相关的权限。并且可以将授予给用户的权限收回。
(1)系统权限
系统权限是指在系统级控制数据库的存取和使用的机制,即执行某种SQL语句的能力。 例如,启动、停止数据库,修改数据库参数,连接到数据库,以及创建、删除、更改模式对 象(如表、视图、索引、过程等)等权限。 系统权限是针对用户而设置的,用户必须被授予相应的系统权限才可以连接到数据库中进行 相应的操作。 在Oracle 11g中,SYSTEM和SYS是数据库管理员,具有DBA所有的系统权限。
(2)对象权限
对象权限是指在对象级控制数据库的存取和使用的机制,即访问其他用户模式对象的能力。 例如,用户可以存取哪个用户模式中的哪个对象,能对该对象进行查询、插入、更新操作等。 对象权限一般是针对用户模式对象的。对象权限是用户之间的表、视图等模式对象的相互存取权限。例如, 以用户“SCOTT”登录到数据库,可以查询该用户模式中的XSB表。 图8.10所示。但是,如果以用户“SYS”登录数据库,则不可以查询XSB表,因为XSB表不属于SYS用户。
2.系统权限管理
(1)系统权限的分类
--统计权限
SELECT COUNT(*)
FROM SYSTEM_PRIVILEGE_MAP;
--查看权限
SELECT *
FROM SYSTEM_PRIVILEGE_MAP;
提示:下面给出了一些权限的具体解释,只是方便看而已,读者也可以通过上面的语句在SQL PLus中查看。

①数据库维护权限及功能
| 系统权限 | 功能 |
| ALTER DATABASE | 修改数据库的结构 |
| ALTER SYSTEM | 修改数据库系统的初始化参数 |
| DROP PUBULIC SYNONYM | 删除公共同义词 |
| CREATE PUBLIC SYSNONYM | 创建公共同义词 |
| CREATE PROFILE | 创建资源配置文件 |
| ALTER PROFILE | 更改资源配置文件 |
| DROP PROFILE | 删除资源配置文件 |
| CREATE ROLE | 创建角色 |
| ALTER ROLE | 修改角色 |
| DROP ROLE | 删除角色 |
| CREATE TABLESPACE | 创建表空间 |
| ALTER TABLESPACE | 修改表空间 |
| DROP TABLESPACE | 删除表空间 |
| MANAGE TABLESPACE | 管理表空间 |
| UNLMITED TABLESPACE | 不受配额限制的使用表空间 |
| CREATE SESSION | 创建会话,允许用户连接到数据库 |
| ALTER SESSION | 修改用户会话 |
| ALTER RESOURCE COST | 更改配置文件中计算资源消耗的方式 |
| RESTRICTED SESSION | 在数据库处于受限会话模式下连接到数据 |
| CREATE USER | 创建用户 |
| ALTER USER | 更改用户 |
| BECOME USER | 当执行完全装入时,成为另一个用户 |
| DROP USER | 删除用户 |
| SYSOPER | STARTUP 启动数据库 SHUTDOWN 关闭数据库 ALTER DATABASE MOUNT/OPEN ALTER DATABASE BACKUP CONTROFILE ALTER DATABASE BEGINJEBID BACKUP ALTER DATABASE ARCHIVELOG RECOVER DATABASE RESTRICTED SESSION CREATE SPFILE/PFILE SYSDBA(系统管理权限) SYSOPER(的所有权限) WITH ADMIN OPTION子句 |
| SELECT ANY DICTIONARY | 允许查询以“DBA”开头的数据字典 |
关于
STARTUP 启动数据库
SHUTDOWN 关闭数据库
ALTER DATABASE MOUNT/OPEN
可以看这篇文章:关于Oracle中的关闭和启动数据库的几种方式(五)
②数据库模式对象权限
| 系统权限 | 功能 |
| create cluster | 在自己的模式中创建聚簇 |
| drop cluster | 删除自己模式中的聚簇 |
| create procedure | 在自己的模式中创建存储过程 |
| drop procedure | 在自己的模式中删除存储过程 |
| create database link | 创建数据库连接权限,通过数据库连接允许用户存取远程的数据库。 |
| drop datebase link | 删除数据库的连接 |
| create synonym | 创建私有同义词 |
| drop synonym | 删除同义词 |
| create sequence | 创建开发者所需的序列 |
| create trigger | 创建触发器 |
| drop trigger | 删除触发器 |
| create table | 创建表 |
| drop table | 删除表 |
| create view | 创建视图 |
| drop view | 删除视图 |
| create type | 创建对象 |
③ANY权限及功能
系统中的ANY权限,表示可以在任何用户模式中进行操作。
| 系统权限 | 功能 |
| analyze any | 在任何模式中的任何表,聚簇或索引执行分析,查找其中的迁移记录和链接记录 |
| create any cluster | 在任何用户模式中创建聚簇 |
| alter any cluster | 在任何用户模式中修改聚簇 |
| drop any cluster | 在任何用户模式中删除聚簇 |
| create any index | 在数据库中任何表上创建索引 |
| alter any index | 在任何用户模式中更改索引 |
| drop any index | 在任何用户模式中删除索引 |
| create any procedure | 在任何用户模式中创建过程 |
| alter any procedure | 在任何用户模式中修改过程 |
| drop any proceduer | 在任何用户模式中删除过程 |
| execute any procedure | 在任何模式中执行或者引用过程 |
| grant any privilege | 将数据库中任何权限授予任何用户 |
| alter any role | 修改数据库中的任何角色 |
| drop any role | 删除数据库中的任何角色 |
| grant any role | 允许用户将数据库中的任何角色授予数据的其他用户 |
| create any sequence | 在任何模式中创建序列 |
| alter any sequence | 在任何模式中修改序列 |
| drop any sequence | 在任何模式中删除序列 |
| select any sequence | 允许使用任何模式中的序列 |
| create any table | 在任何模式中创建表 |
| alter any table | 在任何模式中更改表 |
| drop any table | 允许删除任何用户模式中的表 |
| commit any table | 在任何模式中为任何表,视图或者列添加注释 |
| select any table | 查询任何用户模式中基本表的记录 |
| insert any table | 允许向任何用户模式中的表插入记录 |
| update any table | 允许修改任何用户模式中的表记录 |
| delete any table | 允许删除任何用户模式中的表记录 |
| lock any table | 对任何用户模式中的表加锁 |
| flashback any table | 允许使用AS OF子句对任何模式中的表,视图执行一个SQL语句的闪回查询 |
| create any view | 在任何用户模式中创建视图 |
| create any trigger | 在任何用户模式中创建触发器 |
| alter any trigger | 在任何用户模式中修改触发器 |
| drop any trigger | 在任何用户模式中删除触发器 |
| administer database trigger | 允许ON DATABASE 触发器,在能够创建ON DATABASE 触发器之前,必须拥有CREATE TIRGGER 权限或者CREATE ANY TRIGGER权限。 |
| create any synonym | 在任何用户模式中创建专用同义词 |
| drop any synonym | 在任何用户模式中删除同义词 |
(2)系统权限的授予
GRANT <系统权限名称>TO {PUBLIC | <角色名> | <用户名>[,...N]}
[WITH ADMIN OPTION]
提示:
这里的系统权限就是上面表中给出的一部分;
WITH ADMIN OPTION表示指定用户可以将这些权限授予该其他的用户。
①首先在“超级管理连接”下新建一个用户
用户名为:user1,密码为Admin123123,默认表空间为users,临时表空间为temp
CREATE USER user1
IDENTIFIED BY Admin123123
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;提示:上面新建的用户还没有授予什么权限,如果我们执行连接操作的话,那么系统会提示错误。

②授予权限
提示:这里首先给该用户授予会话的权限,暂时做连接。
GRANT CREATE SESSION TO user1;
会话授予成功之后,连接测试:

现在授予该用户创建表和创建视图:
GRANT CREATE ANY TABLE,CREATE ANY VIEW
TO user1
WITH ADMIN OPTION;
create table demo(id int);
如果我这里向创建的表中插入数据,是不能的,还没有授权插入数据。
insert all
into demo values(1)
into demo values(2)
into demo values(3)
select * from dual;

③系统权限的收回
REVOKE <系统权限名>FROM {PUBLIC | <角色名> | <用户名>[,...N]}
revoke create any table from user1;
如果试图再去创建表的话:

(3)对象权限的管理
①对象权限分类
- SELECT:读取表,视图,序列中的行;
- UPDATE:更新表,视图和序列中的行;
- DELETE:删除表,视图中的数据;
- INSERT:向表和视图中插入数据;
- EXECUTE:执行类型,函数,包和过程;
- READ:读取数据字典中的数据;
- INDEX:生成索引;
- REFRENCES:生成外键;
- ALTER:修改表,序列,同义词中的结构。
②对象权限授予
GRANT {<对象权限名> | ALL [PRIVILEGE] [(<>[,...N])]}
ON [用户方案名.]<对象权限名> TO {PUBLIC | <角色名>| <用户名>[,...N]}
[WITH GRANT OPTION]
例子:给用户下面的demo表授予权限查询,插入,更新和删除数据。
GRANT SELECT,INSERT,UPDATE,DELETE
ON demo
TO user1
③对象权限收回
REVOKE {<对象权限名> | ALL [PRIVILEGE] [(<>[,...N])]}
ON [用户方案名.]<对象权限名> TO {PUBLIC | <角色名>| <用户名>[,...N]}
[CASCADE CONSTRAINTS];
(4)安全特性
- 表安全
- 视图安全
- 过程安全
- 类型安全