用户、权限及角色管理

一 用户管理

1 创建用户语法结构
create_user::=

2 创建用户
1)以管理员身份登录
[oracle@strong ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Tue May 1 12:06:59 2018

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

SQL> conn / as sysdba
Connected.
2)创建stu用户
SQL> create user stu
2 identified by oracle
3 default tablespace users
4 temporary tablespace temp
5 quota 5M on users
6 password expire;

User created.
3)给用户授connect权限
SQL> grant connect to stu;

Grant succeeded.
4)使用新用户stu登录数据库
[oracle@strong ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Tue May 1 12:11:12 2018

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

SQL> conn stu/oracle@orcl
ERROR:
ORA-28001: the password has expired


Changing password for stu
New password:
Retype new password:
Password changed
Connected.
3 修改用户
1)修改用户密码
SQL> alter user stu identified by student;

User altered.
2)修改用户默认表空间
SQL> alter user stu default tablespace test1;

User altered.
3)强制用户下次登录时修改密码
SQL> alter user stu password expire;

User altered.
4)锁定用户
SQL> alter user stu account lock;

User altered.
5)解锁用户
SQL> alter user stu account unlock;

User altered.
4 监视用户
1)查询用户的默认表空间
SQL> col username for a15
SQL> col account_status for a15
SQL> col default_tablespace for a15
SQL> col temporary_tablespace for a15
SQL> select username,account_status,default_tablespace,temporary_tablespace
2 from dba_users
3 where username='STU';

USERNAME ACCOUNT_STATUS DEFAULT_TABLESP TEMPORARY_TABLE
--------------- --------------- --------------- ---------------
STU OPEN TEST1 TEMP
2)查询用户的空间配额
SQL> select tablespace_name,username,bytes,max_bytes
2 from dba_ts_quotas
3 where username='STU';

TABLESPACE_NAME USERNAME BYTES MAX_BYTES
------------------------------ --------------- ---------- ----------
USERS STU 0 5242880
3)查询用户会话信息
SQL> select username,sid,serial#,machine
2 from v$session
3 where username='STU';
SQL> /

USERNAME SID SERIAL# MACHINE
--------------- ---------- ---------- ----------------------------------------------------------------
STU 43 3463 strong.oracle.com
4)删除用户会话信息
SQL> alter system kill session '43,3463';

System altered.
5 删除用户
1)用户含有对象,则需要加cascade选项,否则会报错;
SQL> drop user stu;
drop user stu
*
ERROR at line 1:
ORA-01922: CASCADE must be specified to drop 'STU'
SQL> drop user stu cascade;

User dropped.
2)用户不包含对象,则直接删除
SQL> create user stu identified by stu;

User created.

SQL> drop user stu;

User dropped.

二 权限管理

1 系统权限和对象权限
2 授予权限语法
grant::=

grant_system_privileges::=

grant_object_privileges::=

on_object_clause ::=

grantee_clause ::=

3 撤销权限语法
revoke::=

revoke_system_privileges::=

revoke_object_privileges::=

grantee_clause::=

on_object_clause::=

4 系统权限的授权和撤销
场景:
1)DBA将带有admin option的create table系统权限授予Joe;
2)Joe创建表;
3)Joe将create table系统权限授予Emily;
4)Emily创建表;
5)DBA撤销Joe的create table系统权限。
结果:
Joe的表仍旧存在,但Joe不能再创建新表,Emily的表仍旧存在,而且她仍旧具有create table系统权限。
5 对象权限的授权和撤销
场景:
1)Joe被授予了对employees的SELECT对象权限(带grant option);
2)Joe将对employees的SELECT权限授予Emily;
3)撤销对Joe的SELECT权限;
结果:
撤销级联到Emily。

三 角色管理

1 创建角色语法
create_role::=

2 角色管理
1)建一个角色
sql>create role role1;

2)授权给角色
sql>grant create any table,create procedure to role1;

3)授予角色给用户
sql>grant role1 to user1;

4)查看角色所包含的权限
sql>select * from role_sys_privs;

5)创建带有口令以角色(在生效带有口令的角色时必须提供口令)
sql>create role role1 identified by password1;

6)修改角色:是否需要口令
sql>alter role role1 not identified;
sql>alter role role1 identified by password1;

7)设置当前用户要生效的角色
(注:角色的生效是一个什么概念呢?假设用户a有b1,b2,b3三个角色,那么如果b1未生效,则b1所包含的权限对于a来讲是不拥有的,只有角色生效了,角色内的权限才作用于用户,最大可生效角色数由参数MAX_ENABLED_ROLES设定;在用户登录后,oracle将所有直接赋给用户的权限和用户默认角色中的权限赋给用户。)
sql>set role role1;//使role1生效
sql>set role role,role2;//使role1,role2生效
sql>set role role1 identified by password1;//使用带有口令的role1生效
sql>set role all;//使用该用户的所有角色生效
sql>set role none;//设置所有角色失效
sql>set role all except role1;//除role1外的该用户的所有其它角色生效。
sql>select * from SESSION_ROLES;//查看当前用户的生效的角色。

8)修改指定用户,设置其默认角色
sql>alter user user1 default role role1;
sql>alter user user1 default role all except role1;
详见oracle参考文档

9)删除角色
sql>drop role role1;
角色删除后,原来拥用该角色的用户就不再拥有该角色了,相应的权限也就没有了。
 
说明:
1)无法使用WITH GRANT OPTION为角色授予对象权限
2)可以使用WITH ADMIN OPTION 为角色授予系统权限,取消时不是级联
原文地址:https://www.cnblogs.com/alen-liu-sz/p/12975647.html