【Oracle11g】04_用户和权限管理

1.默认用户

以上只是默认用户的其中三个,还有其他默认用户

SYS用户:数据库中所有数据字典表和视图都存储在 SYS 模式中。SYS用户主要用来维护系统信息和管理实例。
SYSTEM用户:SYSTEM 是默认的系统管理员,该用户拥有Oracle管理工具使用的内部表和视图。通常通过SYSTEM用户管理数据库用户、权限和存储等。
SCOTT用户:SCOTT用户是Oracle 数据库的一个示范帐户,在数据库安装时创建。
scott是oracle公司第一个员工的名字。

2.创建用户

  • 要连接到Oracle数据库,就需要创建一个用户账户。
  • 每个用户都有一个默认表空间和一个临时表空间

语法:

CREATE USER username
IDENTIFIED BY password
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace];

注意:创建用户设置的密码不能以数字开头。

3.profile概要文件

通过https://localhost:1158/em可以打开em,然后找到【服务器】TAB,即可看到下图

C:\Users\QIN>sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 星期三 4月 1 21:23:22 2020

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

SQL> conn system/admin@orcl
已连接。
SQL> create user test1 identified by test1;

用户已创建。
SQL> alter user test1 profile prol;

用户已更改。

此时,在em中已经生成了profile文件,如下图:可以看到设置的参数同时也生效了。

根据上图可以知道,登录失败2次,则账户锁定2天。因此,做以下测试

SQL> conn test1/abc@orcl
ERROR:
ORA-01017: invalid username/password; logon denied


警告: 您不再连接到 ORACLE。
SQL> conn test1/abcd@orcl
ERROR:
ORA-01017: invalid username/password; logon denied


SQL> conn test1/abcde@orcl
ERROR:
ORA-28000: the account is locked

测试发现,确实是登录失败2次,则锁定2天。

账户被锁定了,那么如何解锁呢?

SQL> conn system/admin@orcl
已连接。
SQL> alter user test1 account unlock;

用户已更改。

同时,也可以通过概要文件设置登录密码的失效时间与最大容忍天数(即密码最多宽限2天)

SQL> alter profile prol limit password_life_time 10 password_grace_time 2;

配置文件已更改

删除prfile:drop profile prol cascade; 删除后,test1用户的profile会指向default。

4.权限

  • 权限指的是执行特定命令或访问数据库对象的权利
  • 权限有两种类型,系统权限和对象权限
    • 系统权限允许用户执行某些数据库操作,如创建表就是一个系统权限
    • 对象权限允许用户对数据库对象(如表、视图、序列等)执行特定操作

4.1 系统权限

授予用户权限,可以是系统权限或者对象权限。

   GRANT privilege [,privilege…]
   TO  user [, user|role, PUBLIC…] 
    [WITH ADMIN OPTION];
说明:包含了WITH ADMIN OPTION,只能是系统权限。
   收回系统权限REVOKE
例:REVOKE create session FROM test1;

那么,系统权限被收回时,会不会把级联收回下游用户的权限呢?通过下图即可说明

首先,我们创建了test2用户,并且授予with admin option,那么,此时的test2用户即可对新建用户授予create session的权限,新建test3用户并授予create session权限,此时,test3是可以登录的,但是当收回test2的权限的时候,test3还是可以正常登录,说明系统权限在收回的时候,不会级联收回。

4.2 对象权限

对象权限:访问某个用户的特定对象(如表、视图等)的对象权限(select on scott.student)

 GRANT object_privilege [columns…]
   ON  object  TO  user [, user|role, PUBLIC…] 
    [WITH GRANT OPTION];

  收回对象权限REVOKE:
   REVOKE privilege     ON object 
   FROM {user|role|PUBLIC};
例:revoke select on scott.student from test2;

授予对象权限可以精确到列的权限上

grant update(ename,sal) on scott.emp to wang;

与系统权限不一样的是,对象权限被收回权限的时候,会级联收回权限,通过下图可以看出

补充知识:
select * from tab -- 查看当前用户中所有的表(TAB是一个同义词)
select * from dba_sys_privs d where d.grantee = 'TEST1' --查看test1用户的系统权限

5.角色

角色管理:角色是一组相关权限的组合,可以将权限授予角
色,再把角色授予用户,以简化权限管理。
(1)创建角色CREATE ROLE,应该具有CREATE ROLE系统权限。
CREATE ROLE role_name;
(2) 授予角色权限,可以是系统权限或者对象权限。
GRANT privilege TO ROLE;
例: grant create session ,create any table, drop any table to role1;
(3) 将角色授予用户
GRANT role TO user;
例: grant role1 to test2;
(4) 从用户收回角色
REVOKE role FROM user;

5.1 查看角色权限

1)查看角色具有什么对象权限

select * from dba_sys_privs where role='ROLE1' 

2)查看角色具有什么对象权限

select * from dba_tab_privs

3)查看用户具有什么样的对象权限

select * from dba_tab_privs d where d.grantee='TEST1'

4)查看用户具有什么样的系统权限

select * from dba_sys_privs d where d.grantee='TEST1'

6.更改和删除用户

--ALTER USER 命令可用于更改口令 
ALTER USER wang IDENTIFIED BY wangnewpwd; --修改 wang用户的密码

--DROP USER 命令用于删除用户 
DROP USER wang [CASCADE];  --删除 wang用户模式

posted @ 2020-04-01 23:28  OLIVER_QIN  阅读(1235)  评论(0编辑  收藏  举报