zoukankan      html  css  js  c++  java
  • 用户、权限及角色管理

    一 用户管理

    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 为角色授予系统权限,取消时不是级联
  • 相关阅读:
    图像按钮
    提交按钮
    文件上传域
    Python创建虚拟环境
    Typecho使用技巧
    面向对象
    Python语法入门
    Python 基础数据类型
    与用户交互
    MySQL5.7安装教程
  • 原文地址:https://www.cnblogs.com/alen-liu-sz/p/12975647.html
Copyright © 2011-2022 走看看