暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle数据库权限管理

原创 北斗 2023-07-20
1019

Oracle权限管理

一、权限分类:

系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。
实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。
二、系统权限管理:
1、系统权限分类:
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。
2、系统权限授权命令:
[系统权限只能由DBA用户授出:sys, system(最开始只能是这两个用户)]
授权命令:SQL> grant connect, resource, dba to 用户名1 [,用户名2]…;
[普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。]
例:
SQL> connect system/manager
SQL> Create user user50 identified by user50;
SQL> grant connect, resource to user50;
查询用户拥有哪里权限:
SQL> select * from user_sys_privs;–针对当前登陆用户被授予的系统权限
SQL> select * from dba_sys_privs; –针对所有用户被授予的系统权限
SQL> select * from dba_role_privs;
SQL> select * from role_sys_privs;

删除用户:SQL> drop user 用户名 cascade; //加上cascade则将用户连同其创建的东西全部删除

3、系统权限传递:
增加WITH ADMIN OPTION选项,则得到的权限可以传递。
SQL> grant connect, resorce to user50 with admin option; //可以传递所获权限。
4、系统权限回收:系统权限只能由DBA用户回收
命令:SQL> Revoke connect, resource from user50;
说明:
1)如果使用WITH ADMIN OPTION为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限。
2)系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。

常见的系统权限

   CREATE SESSION                     创建会话

   CREATE SEQUENCE                    创建序列

   CREATE SYNONYM                     创建同名对象

   CREATE TABLE                       在用户模式中创建表

   CREATE ANY TABLE                   在任何模式中创建表

   DROP TABLE                         在用户模式中删除表

   DROP ANY TABLE                     在任何模式中删除表

   CREATE PROCEDURE                   创建存储过程

   EXECUTE ANY PROCEDURE              执行任何模式的存储过程

   CREATE USER                        创建用户

   DROP USER                          删除用户

三、实体权限管理
1、实体权限的分类:select, update, insert, alter, index, delete, all //all包括所有权限
execute //执行存储过程权限
user01:
SQL> grant select, update, insert on product to user02;
SQL> grant all on product to user02;
user02:
SQL> select * from user01.product;
// 此时user02查user_tables,不包括user01.product这个表,但如果查all_tables则可以查到,因为他可以访问。
2、将表的操作权限授予全体用户:
SQL> grant all on product to public; // public表示是所有的用户,这里的all权限不包括drop。
[实体权限数据字典]:
SQL> select owner, table_name from all_tables; // 用户可以查询的表
SQL> select table_name from user_tables; // 用户创建的表
SQL> select grantor, table_schema, table_name, privilege from all_tab_privs; // 获权可以存取的表(被授权的)
SQL> select grantee, owner, table_name, privilege from user_tab_privs; // 授出权限的表(授出的权限)
[查询权限分配情况]:
SQL> SELECT * FROM user_tab_privs_made; // 查询已授予的对象权限(即某个用户对哪些表对哪些用户开放了对象权限)
SQL> SELECT * FROM user_col_privs_made; // 查询列上开放的对象权限
SQL> SELECT * FROM user_tab_privs_recd; // 查询已接受的对象特权(即某个用户被授予了哪些表上的哪些对象特权)
SQL> SELECT * FROM user_col_privs_recd; // 查询用户已接受列的对象权限
3、DBA用户可以操作全体用户的任意基表(无需授权,包括删除):
DBA用户:
SQL> Create table stud02.product(
id number(10),
name varchar2(20));
SQL> drop table stud02.emp;
SQL> create table stud02.employee
as
select * from scott.emp;
4、实体权限传递(with grant option):
user01:
SQL> grant select, update on product to user02 with grant option; // user02得到权限,并可以传递。
5、实体权限回收:
user01:
SQL>Revoke select, update on product from user02; //传递的权限将全部丢失。
说明
1)如果取消某个用户的对象权限,那么对于这个用户使用WITH GRANT OPTION授予权限的用户来说,同样还会取消这些用户的相同权限,也就是说取消授权时级联的。


数据字典视图                     描述

ROLE_SYS_PRIVS           角色拥有的系统权限

ROLE_TAB_PRIVS           角色拥有的对象权限

USER_TAB_PRIVS_MADE      查询授出去的对象权限(通常是属主自己查)

USER_TAB_PRIVS_RECD      用户拥有的对象权限

USER_COL_PRIVS_MADE      用户分配出去的列的对象权限

USER_COL_PRIVS_RECD      用户拥有的关于列的对象权限

USER_SYS_PRIVS           用户拥有的系统权限

USER_TAB_PRIVS           用户拥有的对象权限

USER_ROLE_PRIVS          用户拥有的角色  
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论