【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用户模式
声明:书写博客不易,转载请注明出处,请支持原创,侵权将追究法律责任
个性签名:人的一切的痛苦,本质上都是对自己无能的愤怒
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!