admin管理员组

文章数量:1794759

Oracle数据库的权限管理(二)

Oracle数据库的权限管理(二)

目录

1.权限管理

(1)系统权限

(2)对象权限

2.系统权限管理

(1)系统权限的分类

①数据库维护权限及功能

②数据库模式对象权限

③ANY权限及功能

(2)系统权限的授予

①首先在“超级管理连接”下新建一个用户

②授予权限

③系统权限的收回 

(3)对象权限的管理

①对象权限分类

②对象权限授予

③对象权限收回

(4)安全特性


Oracle学习的相关知识点(汇总)

提示:关于新用户的创建相关的操作请看上面链接里面的《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权限,表示可以在任何用户模式中进行操作。

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)安全特性
  • 表安全
  • 视图安全
  • 过程安全
  • 类型安全

本文标签: 权限数据库oracle