• 4、Oracle用户、权限、角色


    1、用户创建、修改、删除

    创建用户语法:

    CREATE USER user_name ----创建用户名称

    IDENTIFIED BY password ----用户口令

    [ DEFAULT TABLESPACE default_tablespace | ----指定默认表空间

    TEMPORARY TABLESPACE temp_tablespace    | ----指定临时表空间

    PROFILE profile ----用户的资源文件,默认default

    QUOTA [ integer K | M ] | UNLIMITED ON tablespace ----表示用户在表空间中可以使用的空间总大小

    | PASSWORD EXPIRE ----强制用户第一次登录后修改口令

    | ACCOUNT LOCK | UNLOCK ]; ----锁定和解锁用户账号

    测试创建用户:

    -- Create the user
    CREATE USER U007
    IDENTIFIED BY his
    DEFAULT TABLESPACE users
    TEMPORARY TABLESPACE  temp
    PROFILE DEFAULT
    QUOTA 100M ON users
    PASSWORD EXPIRE;

    修改用户:

    (1).修改口令;

    (2).修改默认空间;

    (3).修改临时表空间;

    (4).修改表空间配额;

    (5).使用户口令失效;

    (6).锁定用户;

    删除用户:

    ----级联删除

    DROP USER u007 cascade;

    2、查看用户会话信息

    --查询数据字典视图v$session,可获取会话号、登入时间、用户名、计算机名称

    select SID,SERIAL#,LOGON_TIME,USERNAME,MACHINE from v$session;

    --SID和SERIAL#能够唯一标识一个会话,所以可以使用这两个值关闭指定会话

    alter system kill session '48,555';

    --查询数据字典视图V$open_corsor,记录了用户登录数据库后,执行的SQL语句

    --ps:SQL_TEXT字段中的SQL是不完整的,可以通过关联v$sqlarea

    select SID,USER_NAME,SQL_ID,SQL_TEXT from v$open_cursor where USER_name='U000054';

    3、用户配置文件

    资源限制参数:

    select * from dba_profiles where profile='MONITORING_PROFILE' AND resource_type='KERNEL';

    (1).设置参数resource_limit为true,否则profile里的这些资源限制并不起作用

    SQL> show parameter resource_limit;

    NAME                 TYPE        VALUE

    ---------------  ----------  -------

    resource_limit     boolean      FALSE     --默认为false的!

     

    SQL> alter system set resource_limit=true scope=both;

    System altered.

    (2).创建profile(不建议直接修改默认DEFAULT profile)

    SQL> create profile MONITORING_PROFILE limit

            sessions_per_user 20

            connect_time 3 --分钟为单位

            idle_time 60;

    (3).这时查看dba_profiles视图,就可看到新建的profile设置。

    SQL> select * from dba_profiles where profile='MONITORING_PROFILE';

    (4).修改用户应用该profile文件:

    SQL> alter user U000054 profile MONITORING_PROFILE;

    (5).可以动态修改profile的参数:

    ----用户可以同时连接的会话数量3

    SQL> alter profile MONITORING_PROFILE limit SESSIONS_PER_USER 3;

    ----限制每个用户能够连接到数据库的最长时间为60min

    SQL>alter profile MONITORING_PROFILE limit connect_time 60;

    ----指定用户在数据库被终止前,可以让连接处于多长的空闲状态

    SQL>alter profile MONITORING_PROFILE limit IDLE_TIME 1;

     

    口令限制参数:

    select * from dba_profiles where profile='MONITORING_PROFILE' AND resource_type='PASSWORD';

    ----限制用户登录oracle时,输入口令允许连续失败的次数为3次,3次失败后锁定账号

    SQL>alter profile MONITORING_PROFILE limit FAILED_LOGIN_ATTEMPTS 3;

    ----设置口令的有效时间,单位天,默认是180天,可统一修改成不限制;

    SQL>alter profile MONITORING_PROFILE limit PASSWORD_LIFE_TIME UNLIMITED;

    ----设置账号被锁定的天数为1小时;

    SQL>alter profile MONITORING_PROFILE limit PASSWORD_LOCK_TIME 1/24;

    ----设置用于判断口令复杂性的函数

    SQL>alter profile MONITORING_PROFILE limit PASSWORD_VERIFY_FUNCTION verify_function_HIS;

    --创建自己的密码验证规则函数verify_function_HIS,详细内容如下:

    CREATE OR REPLACE FUNCTION verify_function_HIS
    (username     varchar2,
     password     varchar2,
     old_password varchar2)
      RETURN boolean IS
      n          boolean;
      m          integer;
      differ     integer;
      isdigit    boolean;
      ischar     boolean;
      ispunct    boolean;
      digitarray varchar2(20);
      punctarray varchar2(25);
      chararray  varchar2(52);
      Err_Custom Exception;
      v_Error Varchar2(255);
    BEGIN
      digitarray := '0123456789';
      chararray  := 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
      punctarray := '!"#$%&()``*+,-/:;<=>?_';
      
      -- 检查密码和用户名的相似程度
      IF NLS_LOWER(password) = NLS_LOWER(username) THEN
        v_Error := '用户名和密码相同!';
        Raise Err_Custom;
      END IF;
    
      -- 检查密码长度
      IF length(password) < 4 THEN
        v_Error := '密码长度不能小于四位数!';
        Raise Err_Custom;
      END IF;
    
      --检查密码复杂度,可根据情况,设置简单密码字典
      IF NLS_LOWER(password) IN ('welcome', 'database', 'account', 'user', 'password', 'oracle', 'computer', 'abcd') THEN
        v_Error := '密码过于简单!';
        Raise Err_Custom;
      END IF;
      -- 所有检查通过,返回true  
      RETURN(TRUE);
    Exception
      When Err_Custom Then
        Raise_Application_Error(-20003, v_Error);
      When Others Then
        Zl_Errorcenter(Sqlcode, Sqlerrm);
    END;

    --PS:ORACLE11G安装目录下D:appAdministratorproduct11.2.0dbhome_1RDBMSADMINutlpwdmg.sql的脚本文件utlpwdmg.sql,可执行创建一个密码验证规则verify_function_11G函数

     

    4、权限

    系统权限:创建会话、创建表、创建视图、创建用户权限等;

    select any table--查询任意表权限

    select any dictionary--查询数据字典视图权限

    --语法:

    GRANT system_privilege

    TO PUBLIC | role | user_name

    [WITH ADMIN OPTION]; ---可以转授权

    --例子:

    grant create session,create table,create view to u007 with admin option;

    对象权限:授权数据库对象包括表、视图、序列、存储过程和函数等

    --语法:

    GRANT object_privige | ALL [PRIVILEGES]

    ON [schema.]object

    TO PUBLIC | role | user_name

    [WITH ADMIN OPTION]; ---可以转授权

    --例子:

    grant select on scott.dept to public;

     

    常用查看权限信息的数据字典视图

    --了解用户所具有的系统权限

    select * from dba_sys_privs where GRANTEE='U000393';

    --了解表的对象授权情况

    select * from dba_tab_privs where table_name='部门表'

     

    5、角色

    下面介绍几种常用的、主要的预定义角色及其相关的权限:

    1. CONNECT -- 具有最终用户的典型权限和最基本的权限

    2. RESOURCE --主要是授予开发人员的权限

    3. DBA  -- 不多说了^_^

    4. EXP_FULL_DATABASE  -- 具有数据库逻辑备份时数据导出权限

    5. IMP_FULL_DATABASE  -- 具有数据库逻辑备份时数据导入权限

    6. DELETE_CATALOG_ROLE -- 删除和重建数据字典的权限

    7. EXECUTE_CATALOG_ROLE -- 具有查询数据字典的权限

    8. SELECT_CATALOG_ROLE -- 从数据字典中执行部分存储过程和函数的权限

    说明:

    1-3:是为了同ORACLE老版本中的概念相兼容而提供的,不能只依赖于这些ROLE;

    4-5:是为了使用ImportExport实用程序的方便而提供的;

    6-8:是为了数据字典视图、存储、函数和包的卸载而提供的。

    常用查看角色信息的数据字典视图:

    --查看某个用户拥有的角色

    select * from dba_role_privs where GRANTEE='ADMIN';

    --查看某个角色所拥有的系统权限

    select * from role_role_privs where role='DBA';

    生命不息,折腾不止;不计后果,不问前程!
  • 相关阅读:
    codeforces 938 C. Constructing Tests
    codeforces 981 C.Useful Decomposition
    Wannafly 挑战赛16 A 取石子
    codeforces 873 D. Merge Sort(分治)
    lightoj 1158
    lightoj 1226
    lightoj 1382
    lightoj 1283
    hdu 5445 Food Problem (多重背包)
    light 1205
  • 原文地址:https://www.cnblogs.com/jionjionyou/p/5503514.html
Copyright © 2020-2023  润新知