zoukankan      html  css  js  c++  java
  • 用户权限

    环境搭建

    SQL> create user dev identified by oracle;

    User created.

    SQL> grant create session to dev;

    Grant succeeded.

    SQL> show user;

    USER is "DEV"

    一.授予用户create session 的权限

    1.1 检查用户的系统权限

    SQL> desc user_sys_privs;

     Name                                      Null?    Type

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

     USERNAME                                           VARCHAR2(30)

     PRIVILEGE                                 NOT NULL VARCHAR2(40)

     ADMIN_OPTION                                       VARCHAR2(3)

    SQL> select username,privilege from user_sys_privs;

    USERNAME                       PRIVILEGE

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

    DEV                        CREATE SESSION

    Dev只有 创建会话 的权限

    1.2 检查用户的对象权限

    SQL> desc user_tab_privs;

     Name                                      Null?    Type

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

     GRANTEE                                   NOT NULL VARCHAR2(30)

     OWNER                                     NOT NULL VARCHAR2(30)

     TABLE_NAME                                NOT NULL VARCHAR2(30)

     GRANTOR                                   NOT NULL VARCHAR2(30)

     PRIVILEGE                                 NOT NULL VARCHAR2(40)

     GRANTABLE                                          VARCHAR2(3)

     HIERARCHY                                          VARCHAR2(3)

    SQL> select table_name,privilege from user_tab_privs;

    no rows selected

    1.3 检查用户的角色权限

    SQL> desc user_role_privs;

     Name                                      Null?    Type

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

     USERNAME                                           VARCHAR2(30)

     GRANTED_ROLE                                       VARCHAR2(30)

     ADMIN_OPTION                                       VARCHAR2(3)

     DEFAULT_ROLE                                       VARCHAR2(3)

     OS_GRANTED                                         VARCHAR2(3)

    SQL> select username,default_role from user_role_privs;

    no rows selected

    1.4 检查角色的系统权限

    SQL> desc role_sys_privs;

     Name                                      Null?    Type

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

     ROLE                                      NOT NULL VARCHAR2(30)

     PRIVILEGE                                 NOT NULL VARCHAR2(40)

     ADMIN_OPTION                                       VARCHAR2(3)

    SQL> select role,privilege from role_sys_privs;

    no rows selected

    1.5 检查角色的对象权限

    SQL> desc role_tab_privs;

     Name                                      Null?    Type

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

     ROLE                                      NOT NULL VARCHAR2(30)

     OWNER                                     NOT NULL VARCHAR2(30)

     TABLE_NAME                                NOT NULL VARCHAR2(30)

     COLUMN_NAME                                        VARCHAR2(30)

     PRIVILEGE                                 NOT NULL VARCHAR2(40)

     GRANTABLE                                          VARCHAR2(3)

    SQL> select table_name,column_name,privilege from role_tab_privs;

    no rows selected

    二.授予用户select any table 的权限

    SQL> grant select any table to dev;

    Grant succeeded.

    官方文档关于 select any table 的描述:

    当把这个权限授予用户之后,用户可以查询 任何用户的 表、视图、物化视图(权限太大)

    2.1 检查用户的系统权限

    SQL> desc user_sys_privs;

     Name                                      Null?    Type

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

     USERNAME                                           VARCHAR2(30)

     PRIVILEGE                                 NOT NULL VARCHAR2(40)

     ADMIN_OPTION                                       VARCHAR2(3)

    SQL> select username,privilege from user_sys_privs;

    USERNAME                       PRIVILEGE

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

    DEV                        CREATE SESSION

    DEV                        SELECT ANY TABLE

    Dev已经有select any table 的权限

    2.2 检查用户的对象权限

    SQL> desc user_tab_privs;

     Name                                      Null?    Type

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

     GRANTEE                                   NOT NULL VARCHAR2(30)

     OWNER                                     NOT NULL VARCHAR2(30)

     TABLE_NAME                                NOT NULL VARCHAR2(30)

     GRANTOR                                   NOT NULL VARCHAR2(30)

     PRIVILEGE                                 NOT NULL VARCHAR2(40)

     GRANTABLE                                          VARCHAR2(3)

     HIERARCHY                                          VARCHAR2(3)

    SQL> select table_name,privilege from user_tab_privs where table_name='EMP';

    no rows selected

    2.3 检查用户的角色权限

    SQL> desc user_role_privs;

     Name                                      Null?    Type

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

     USERNAME                                           VARCHAR2(30)

     GRANTED_ROLE                                       VARCHAR2(30)

     ADMIN_OPTION                                       VARCHAR2(3)

     DEFAULT_ROLE                                       VARCHAR2(3)

     OS_GRANTED                                         VARCHAR2(3)

    SQL> select username,default_role from user_role_privs;

    no rows selected

    2.4 检查角色的系统权限

    SQL> desc role_sys_privs;

     Name                                      Null?    Type

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

     ROLE                                      NOT NULL VARCHAR2(30)

     PRIVILEGE                                 NOT NULL VARCHAR2(40)

     ADMIN_OPTION                                       VARCHAR2(3)

    SQL> select role,privilege from role_sys_privs;

    no rows selected

    2.5 检查角色的对象权限

    SQL> desc role_tab_privs;

     Name                                      Null?    Type

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

     ROLE                                      NOT NULL VARCHAR2(30)

     OWNER                                     NOT NULL VARCHAR2(30)

     TABLE_NAME                                NOT NULL VARCHAR2(30)

     COLUMN_NAME                                        VARCHAR2(30)

     PRIVILEGE                                 NOT NULL VARCHAR2(40)

     GRANTABLE                                          VARCHAR2(3)

    SQL> select table_name,column_name,privilege from role_tab_privs;

    no rows selected

    2.6 测试

    更新

    SQL> update scott.emp set empno=empno*1;

    update scott.emp set empno=empno*1

                 *

    ERROR at line 1:

    ORA-01031: insufficient privileges

    SQL> rollback;

    Rollback complete.

    删除

    SQL> delete from scott.emp ;

    delete from scott.emp

                      *

    ERROR at line 1:

    ORA-01031: insufficient privileges

    SQL> rollback;

    Rollback complete.

    插入

    SQL> insert into scott.emp(empno) values(123);

    insert into scott.emp(empno) values(123)

                      *

    ERROR at line 1:

    ORA-01031: insufficient privileges

    SQL> rollback;

    Rollback complete.

    三.授予用户对其他用户下 单个对象 只读的权限

    SQL> grant all on scott.emp to dev;

    Grant succeeded.

    SQL> revoke delete on scott.emp from dev;

    Revoke succeeded.

    SQL> revoke update on scott.emp from dev;

    Revoke succeeded.

    3.1 检查用户的系统权限

    SQL> desc user_sys_privs;

     Name                                      Null?    Type

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

     USERNAME                                           VARCHAR2(30)

     PRIVILEGE                                 NOT NULL VARCHAR2(40)

     ADMIN_OPTION                                       VARCHAR2(3)

    Rollback complete.

    SQL> select username,privilege from user_sys_privs;

    USERNAME                       PRIVILEGE

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

    DEV                            CREATE SESSION

    Dev已经有CREATE SESSION 的权限

    3.2 检查用户的对象权限

    SQL> desc user_tab_privs;

     Name                                      Null?    Type

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

     GRANTEE                                   NOT NULL VARCHAR2(30)

     OWNER                                     NOT NULL VARCHAR2(30)

     TABLE_NAME                                NOT NULL VARCHAR2(30)

     GRANTOR                                   NOT NULL VARCHAR2(30)

     PRIVILEGE                                 NOT NULL VARCHAR2(40)

     GRANTABLE                                          VARCHAR2(3)

     HIERARCHY                                          VARCHAR2(3)

    SQL> select table_name,privilege from user_tab_privs;

    TABLE_NAME                     PRIVILEGE

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

    EMP                            FLASHBACK

    EMP                            DEBUG

    EMP                            QUERY REWRITE

    EMP                            ON COMMIT REFRESH

    EMP                            REFERENCES

    EMP                            SELECT

    EMP                            INSERT

    EMP                            INDEX

    EMP                            ALTER

    3.3 检查用户的角色权限

    SQL> desc user_role_privs;

     Name                                      Null?    Type

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

     USERNAME                                           VARCHAR2(30)

     GRANTED_ROLE                                       VARCHAR2(30)

     ADMIN_OPTION                                       VARCHAR2(3)

     DEFAULT_ROLE                                       VARCHAR2(3)

     OS_GRANTED                                         VARCHAR2(3)

    SQL>  select username,default_role from user_role_privs;

    USERNAME                       DEF

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

    DEV                            YES

    3.4 检查角色的系统权限

    SQL> desc role_sys_privs;

     Name                                      Null?    Type

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

     ROLE                                      NOT NULL VARCHAR2(30)

     PRIVILEGE                                 NOT NULL VARCHAR2(40)

     ADMIN_OPTION                                       VARCHAR2(3)

    SQL> select role,privilege from role_sys_privs;

    no rows selected

    3.5 检查角色的对象权限

    SQL> desc role_tab_privs;

     Name                                      Null?    Type

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

     ROLE                                      NOT NULL VARCHAR2(30)

     OWNER                                     NOT NULL VARCHAR2(30)

     TABLE_NAME                                NOT NULL VARCHAR2(30)

     COLUMN_NAME                                        VARCHAR2(30)

     PRIVILEGE                                 NOT NULL VARCHAR2(40)

     GRANTABLE                                          VARCHAR2(3)

    SQL> select table_name,column_name,privilege from role_tab_privs;

    no rows selected

    3.6 测试

    更新

    SQL> update scott.emp set empno=empno*1;

    update scott.emp set empno=empno*1

                 *

    ERROR at line 1:

    ORA-01031: insufficient privileges

    SQL> rollback;

    Rollback complete.

    删除

    SQL> delete from scott.emp ;

    delete from scott.emp

                      *

    ERROR at line 1:

    ORA-01031: insufficient privileges

    SQL> rollback;

    Rollback complete.

    插入

    SQL> insert into scott.emp(empno) values(123);

    1 row created.

    SQL> commit;

    Rollback complete.

  • 相关阅读:
    4.计算机启动过程的简单介绍 计算机启动流程 计算机BIOS作用 POST 开机自检 计算机启动顺序 分区表 操作系统启动
    3.操作系统简单介绍 操作系统发展历史 批处理分时系统 操作系统是什么 操作系统对文件的抽象 进程 虚拟内存是什么 操作系统作用 操作系统功能
    2.计算机组成-数字逻辑电路 门电路与半加器 异或运算半加器 全加器组成 全加器结构 反馈电路 振荡器 存储 D T 触发器 循环移位 计数器 寄存器 传输门电路 译码器 晶体管 sram rom 微处理 计算机
    1.计算机发展阶段 计算机发展历史 机械式计算机 机电式计算机 电子计算机 逻辑电路与计算机 二极管 电子管 晶体管 硅 门电路 计算机 电磁学计算机二进制
    如何解决svn清理失败 不能更新 cleanup失败 cleanup乱码 更新乱码 svn更新提示清理 清理乱码不能清理 svn故障修复SVN cleanup 陷入死循环 svn cleanup时遇到错误怎么办
    eclipse svn插件卸载 重新安装 Subclipse卸载安装 The project was not built since its build path is incomplete This client is too old to work with the working copy at
    java for循环里面执行sql语句操作,有效结果只有一次,只执行了一次sql mybatis 循环执行update生效一次 实际只执行一次
    windows资源管理器多标签打开 windows文件夹多标签浏览 浏览器tab页面一样浏览文件夹 clover win8 win10 报错 无响应问题怎么解决 clover卡死 clover怎么换皮肤
    批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务
    不能ssh连接ubuntu linux 服务器 secureCRT不能ssh连接服务器 不能远程ssh连接虚拟机的ubuntu linux
  • 原文地址:https://www.cnblogs.com/iyoume2008/p/5157719.html
Copyright © 2011-2022 走看看