Oracle 原理:用户和权限,Profile,系统权限,对象权限,角色

目录

1.用户的创建

2.用 Profile(概要文件) 管理用户:

3.系统权限

4.对象权限

5.角色管理


----------------------------------------------分割线---------------------------------------------------------

 

1.用户的创建

      在Oracle中默认有3个用户:SYS,SYSTEM,SCOTT

      其中数据库所有的数据字典表和视图都存储在SYS模式中,相当于Linux下的root用户。模式和用户可以认为是同一个概念。

      SYSTEM是默认的系统管理员,可以管理表和视图、用户、权限等

      SCOOT是默认的普通用户,以Oracle公司的第一个普通员工命名的,默认密码是tiger,刚开始这个用户是被锁住的,无法用该用户登录。

刚开始都是以SYS或者SYSTEM登录。来创建普通用户:

drop user voapd;
create user voapd identified by voapd;
--create user [用户名] identified by [密码] Default tablespace [默认表空间名] Temporary tablespace [临时表空间名]

创建完后可尝试登录新创建的用户:

发现刚创建的用户没有创建会话的权限,需要被授予相应的权限。授予voapd创建会话权限和解除scott锁定:

revoke CREATE SESSION  from voapd;
grant CREATE SESSION to voapd with admin option;
--GRANT [权限] TO [用户] [WITH ADMIN OPTION]
alter user scott account unlock;

之后就可以登录voapd用户 和scott用户了,第一次登录scott用户,会叫你重置密码。with admin option 表示被授予系统权限的用户,可以继续有权利授予其他用户相应的权限。

2.用 Profile(概要文件) 管理用户:

 Profile文件里包含了16个用于管理用户的规则和值,包含了"登录几次失败就会把用户给锁定","锁定的天数为多少天",像这样的参数信息。每个用户都会关联一个Profile文件,然后用户就会遵循Profile里的规则。当没有指定的Profile或者指定的Profile文件被删除时,用户关联的默认概要文件就为DEFAULT。 

select * from dba_profiles 可以查看profile信息。 dba_users可以查看用户信息,里面可以找到用户关联的Profile文件。(UNLIMITED指无穷大)

PROFILE参数解释如下:

COMPOSITE_LIMIT 指定一个会话的总的资源消耗,以service units单位表示。Oracle数据库以有利的方式计算
PASSWORD_LOCK_TIME 指定登陆尝试失败次数到达后帐户的锁定时间,以天为单位。
PASSWORD_VERIFY_FUNCTION 密码验证脚本.
PASSWORD_REUSE_MAX 允许使用历史密码作为新密码的间隔次数
PASSWORD_REUSE_TIME 允许使用历史密码作为新密码的间隔天数
PASSWORD_LIFE_TIME 指定同一密码所允许使用的天数
FAILED_LOGIN_ATTEMPTS 密码登录失败次数,超过则锁定用户
PRIVATE_SGA SGA共享池可以给会话分配的最大字节
CONNECT_TIME 会话的总连接时间(分钟)
IDLE_TIME 会话的连续不活动的时间。
LOGICAL_READS_PER_CALL 指定一次执行SQL(解析、执行和提取)调用所允许读的数据块的最大数目。
LOGICAL_READS_PER_SESSION 指定一个会话允许读的数据块的数目,包括从内存和磁盘读的所有数据块。
CPU_PER_CALL 指定一次调用(解析、执行和提取)的CPU时间限制,单位为百分之一秒
CPU_PER_SESSION 指定会话的CPU时间限制,单位为百分之一秒
SESSIONS_PER_USER 指定限制用户的并发会话的数目。
PASSWORD_GRACE_TIME 密码失效的宽限天数

创建Profile ,关联profile 的示例: 让用户登录3次失败就永久锁定,用户的密码有效期只有30天,宽限时间为3天。


 

--drop profile testProfile CASCADE;
create profile testProfile limit 
failed_login_attempts 3
password_lock_time unlimited;
alter profile testProfile limit
PASSWORD_LIFE_TIME 30
PASSWORD_GRACE_TIME 3;
alter user voapd Profile testProfile;

然后登录voapd,连续试错3次密码就真的永久锁定了。登录SYSTEM用户,用alter user [用户名] account unlock;解除锁定。此外,必须没有用户关联到这个profile时才能直接删除,否则要加级联CASCADE。级联删除prifile会把原来关联到此profile用户 关联回默认的概要文件DEFAULT.

3.系统权限

 GRANT [权限] TO [用户] [WITH ADMIN OPTION] ;

  revoke[权限]  from [用户];


DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。

另外还有   当权限名带有 any时,表示该权限可以操作任意对象。例如 create table 是创建表的权限,create any table 则是拥有创建任意对象的表权限,假如A被授予了这个权限,那么A也可以创建B中表的权限。

系统权限指允许用户对数据库进行哪些操作,可以 select  *  from system_privilege_map; 查询系统权限有哪些。这里抄这位仁兄的表格了https://blog.csdn.net/weixin_30847939/article/details/95212667?ops_request_misc=%7B%22request_id%22%3A%22158229177819195239837236%22%2C%22scm%22%3A%2220140713.130056874..%22%7D&request_id=158229177819195239837236&biz_id=0&utm_source=distribute.pc_search_result.none-task

类型/系统权限

说明

群集权限

CREATE CLUSTER

在自己的方案中创建、更改和删除群集

CREATE ANY   CLUSTER

在任何方案中创建群集

ALTER ANY   CLUSTER

在任何方案中更改群集

DROP ANY   CLUSTER

在任何方案中删除群集

数据库权限

ALTER DATABASE

运行ALTER DATABASE语句,更改数据库的配置

ALTER SYSTEM

运行ALTER SYSTEM语句,更改系统的初始化参数

AUDIT SYSTEM

运行AUDIT SYSTEM和NOAUDIT SYSTEM语句,审计SQL

AUDIT ANY

运行AUDIT和NOAUDIT语句,对任何方案的对象进行审计

索引权限

CREATE ANY INDEX

在任何方案中创建索引

注意:没有CREATE INDEX权限,CREATE TABLE权限包含了CREATE INDEX权限

ALTER ANY INDEX

在任何方案中更改索引

DROP ANY INDEX

任何方案中删除索引

过程权限

CREATE PROCEDURE

在自己的方案中创建、更改或删除过程、函数和包

CREATE ANY PROCEDURE

在任何方案中创建过程、函数和包

ALTER ANY PROCEDURE

在任何方案中更改过程、函数和包

DROP ANY PROCEDURE

在任何方案中删除过程、函数或包

EXECUTE ANY PROCEDURE

在任何方案中执行或者引用过程

概要文件权限

CREATE PROFILE

创建概要文件

ALTER PROFILE

更改概要文件

DROP PROFILE

删除概要文件

角色权限

CREATE ROLE

创建角色

ALTER ANY ROLE

更改任何角色

DROP ANY ROLE

删除任何角色

GRANT ANY ROLE

向其他角色或用户授予任何角色

注意:没有对应的REVOKE ANY   ROLE权限

回退段权限

CREATE ROLLBACK SEGMENT

创建回退段

注意:没有对撤销段的权限

ALTER ROLLBACK SEGMENT

更改回退段

DROP ROLLBACK SEGMENT

删除回退段

序列权限

CREATE SEQLENCE

在自己的方案中创建、更改、删除和选择序列

CREATE ANY SEQUENCE

在任何方案中创建序列

ALTER ANY SEQUENCE

在任何方案中更改序列

DROP ANY SEQUENCE

在任何方案中删除序列

SELECT ANY SEQUENCE

在任何方案中从任何序列中进行选择

会话权限

CREATE SESSION

创建会话,登录进入(连接到)数据库

ALTER SESSION

运行ALTER SESSION语句,更改会话的属性

ALTER RESOURCE COST

更改概要文件中的计算资源消耗的方式

RESTRICTED SESSION

在数据库处于受限会话模式下连接到数据

同义词权限

CREATE SYNONYM

在自己的方案中创建、删除同义词

CREATE ANY SYNONYM

在任何方案中创建专用同义词

CREATE PUBLIC SYNONYM

创建公共同义词

DROP ANY SYNONYM

在任何方案中删除同义词

DROP PUBLIC SYNONYM

删除公共同义词

表权限

CREATE TABLE

在自己的方案中创建、更改和删除表

CREATE ANY TABLE

在任何方案中创建表

ALTER ANY-TABLE

在任何方案中更改表

DROP ANY TABLE

在任何方案中删除表

COMMENT ANY TABLE

在任何方案中为任何表、视图或者列添加注释

SELECT ANY TABLE

在任何方案中选择任何表中的记录

INSERT ANY TABLE

在任何方案中向任何表插入新记录

UPDATE ANY TABLE

在任何方案中更改任何表中的记录

DELETE ANY TABLE

在任何方案中删除任何表中的记录

LOCK ANY TABLE

在任何方案中锁定任何表

FLASHBACK ANY TABLE

允许使用AS OF子句对任何方案中的表、视图执行一个SQL语句的闪回查询

表空间权限

CREATE TABLESPACE

创建表空间

ALTER TABLESPACE

更改表空间

DROP TABLESPACE

删除表空间,包括表、索引和表空间的群集

MANAGE TABLESPACE

管理表空间,使表空间处于ONLINE(联机)、OFFLINE(脱机)、BEGIN BACKUP(开始备份)、END BACKUP(结束备份)状态

UNLIMITED TABLESPACE

不受配额限制地使用表空间

注意:只能将UNLIMITED   TABLESPACE授予账户而不能授予角色

用户权限

CREATE USER

创建用户

ALTER USER

更改用户

BECOME USER

当执行完全装入时,成为另一个用户

DROP USER

删除用户

视图权限

CREATE VIEW

在自己的方案中创建、更改和删除视图

CREATE ANY VIEW

在任何方案中创建视图

DROP ANY VIEW

在任何方案中删除视图

COMMENT ANY TABLE

在任何方案中为任何表、视图或者列添加注释

FLASHBACK ANY TABLE

允许使用AS OF子句对任何方案中的表、视图执行一个SQL语句的闪回查询

触发器权限

CREATE TRIGGER

在自己的方案中创建、更改和删除触发器

CREATE ANY TRIGGER

在任何方案中创建触发器

ALTER ANY TRIGGER

在任何方案中更改触发器

DROP ANY TRIGGER

在任何方案中删除触发器

ADMINISTER DATABASE TRIGGER

允许创建ON DATABASE触发器。在能够创建ON DATABASE触发器之前,还必须先拥有CREATE TRIGGER或CREATE ANY   TRIGGER权限

专用权限

SYSOPER

(系统操作员权限)

STARTUP

SHUTDOWN

ALTER DATABASE   MOUNT/OPEN

ALTER DATABASE   BACKUP CONTROLFILE

ALTER DATABASE   BEGIN/END BACKUP

ALTER DATABASE   ARCHIVELOG

RECOVER   DATABASE

RESTRICTED   SESSION

CREATE SPFILE/PFILE

SYSDBA

(系统管理员权限)

SYSOPER的所有权限,并带有WITH ADMIN   OPTION子句

CREATE   DATABASE

RECOVER DATABASE UNTIL

其他权限

ANALYZE ANY

对任何方案中的任何表、群集或者索引执行ANALYZE语句

GRANT ANY OBJECT PRIVILEGE

授予任何方案上的任何对象上的对象权限

注意:没有对应的REVOKE ANY   OBJECT PRIVILEGE

GRANT ANY PRIVILEGE

授予任何系统权限

注意:没有对应的REVOKE ANY   PRIVILEGE

SELECT ANY DICTIONARY

允许从sys用户所拥有的数据字典表中进行选择

在Oracle9i以后,系统权限不会被级联删除。即用户A把某权限用with admin option方式赋给了B,而B把此权限又赋给了用户C,如果用户A把用户B的权限删除,则C的权限依然存在。

4.对象权限

  GRANT [权限] ON [对象] TO [用户] [WITH GRANT OPTION] ; revoke[权限]  on  [对象] from [用户];

  对象权限和系统权限不一样会被级联删除。指允许用户可以对数据库对象进行操作的权利(表、视图、序列)。

 (这张表又是抄的。)

     

 对象权限    表     视图   序列    过程
   修改(alter)                    √     √  
 删除(delete)  √   √      
 执行(execute)       
 索引(index) √       
插入(insert)  √  √      
关联(references)  √  √      
 选择(select) √  √    
   更新(update)  √  √      

      grant  ALL on [对象] to [用户A]; A则拥有上表打勾的对应一列的所有对象权限。

5.角色管理

   角色是权限的集合,可以把权限加入到角色中,再把角色和用户关联起来,那么用户就可以拥有角色中的权限。

  

DROP ROLE PROGRAMMER;            --PROGRAMMER 和 programmer 是同一个东西
CREATE ROLE programmer;
GRANT ALTER any table to programmer;
GRANT ALL ON salary_tbl TO programmer;
Grant programmer to voapd;
select * from  dba_sys_privs  where grantee ='PROGRAMMER';  ---系统权限表
select * from  dba_tab_privs  where grantee ='PROGRAMMER';  ---对象权限表

   注意:创建数据到系统表里会自动转换成大写。

 

    

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章