日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

控制用户的访问之权限、角色【weber出品必属精品】

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 控制用户的访问之权限、角色【weber出品必属精品】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 權限的作用
  • 限制用戶對數據的訪問

    ?權限的分類

    1. 系統權限:能夠存取數據庫的權限?

  • 2. 對象權限:操作數據庫對象的內容

  • 系統權限?
    ?1.1 如何創建用戶: SQL> create user test default tablespace users identified by test;用戶已創建。

    1.2 數據庫中的系統權限

    SQL> desc system_privilege_map;Name Null? Type----------------------------------------------------------------- -------- --------------------------------------------PRIVILEGE NOT NULL NUMBERNAME NOT NULL VARCHAR2(40)PROPERTY NOT NULL NUMBERSQL> select privilege,name,property from system_privilege_map;PRIVILEGE NAME PROPERTY ---------- ---------------------------------------- -----------3 ALTER SYSTEM 0-4 AUDIT SYSTEM 0-5 CREATE SESSION 0-6 ALTER SESSION 0-7 RESTRICTED SESSION 0

    1.3?查看某個用戶擁有的系統權限

    SQL> select username,privilege,admin_option from user_sys_privs;USERNAME PRIVILEGE ADM ------------------------------ ---------------------------------------- --- SYS AUDIT ANY NO SYS DROP ANY INDEX NO SYS CREATE ANY CLUSTER NO SYS ALTER ANY TABLE NO。。。。。。。。。。。。。。。。。。。。。。。。。 159 rows selected.

    1.4 系統權限的授予與回收
       sys授予select any table給scott

    SQL> conn /as sysdba 已連接。 SQL> grant select any table to scott;--任何普通用戶下的表,scott都可以訪問SQL> select USERNAME,PRIVILEGE from user_sys_privs;USERNAME PRIVILEGE ------------------------------ ---------------------------------------- SCOTT CREATE SYNONYM SCOTT CREATE VIEW SCOTT UNLIMITED TABLESPACE SCOTT SELECT ANY TABLESQL> conn scott/tiger已連接。SQL> select count(*) from oe.CUSTOMERS;COUNT(*) ----------319SQL> select count(*) from hr.employees;COUNT(*) ----------107

    ? ? ? ??sys收回select any table給scott

    SQL> conn /as sysdba 已連接。 SQL> revoke select any table from scott;撤銷成功。SQL> conn scott/tiger 已連接。 SQL> select USERNAME,PRIVILEGE from user_sys_privs;USERNAME PRIVILEGE ------------------------------ ---------------------------------------- SCOTT CREATE SYNONYM SCOTT CREATE VIEW SCOTT UNLIMITED TABLESPACESQL> select count(*) from hr.employees; select count(*) from hr.employees*1 行出現錯誤: ORA-00942: 表或視圖不存在

    1.5 權限的轉授
    ? ? ?系統權限不能被級聯回收

    SQL> conn /as sysdba 已連接。 SQL> grant select any table to scott ;授權成功。SQL> conn scott/tiger 已連接。 SQL> grant select any table to hr; grant select any table to hr *1 行出現錯誤: ORA-01031: 權限不足SQL> conn /as sysdba 已連接。 SQL> revoke select any table from scott;撤銷成功。SQL> grant select any table to scott with admin option;--把select any table的授予權限給scott授權成功。SQL> conn scott/tiger 已連接。 SQL> grant select any table to hr;授權成功。SQL> conn hr/hr已連接。SQL> select count(*) from oe.customers;COUNT(*) ----------319

    SQL> conn /as sysdba
    已連接。
    SQL> revoke select any table from scott;

    撤銷成功。

    SQL> conn scott/tiger
    已連接。
    SQL> select count(*) from oe.customers;
    select count(*) from oe.customers
    *
    第 1 行出現錯誤:
    ORA-00942: 表或視圖不存在

    SQL> conn hr/hr
    已連接。
    SQL> select count(*) from oe.customers;

    COUNT(*)
    ----------
    319

  • ?對象權限

    對象權限:在某個數據庫對象上的權限

    4.1 在某個表上的所有對象權限:

    conn scott/tigergrant all on emp to hr;conn hr/hrSQL> select GRANTEE,OWNER,TABLE_NAME,GRANTOR,PRIVILEGE from user_tab_privs where table_name='EMP';GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE ------- ------ ----------- ------- -------------------- HR SCOTT EMP SCOTT ALTER HR SCOTT EMP SCOTT DELETE HR SCOTT EMP SCOTT INDEX HR SCOTT EMP SCOTT INSERT HR SCOTT EMP SCOTT SELECT HR SCOTT EMP SCOTT UPDATE HR SCOTT EMP SCOTT REFERENCES HR SCOTT EMP SCOTT ON COMMIT REFRESH HR SCOTT EMP SCOTT QUERY REWRITE HR SCOTT EMP SCOTT DEBUG HR SCOTT EMP SCOTT FLASHBACK

    4.2 對象權限的授予與回收

    授予單個權限:SQL> show user USER 為 "SCOTT" SQL> grant select on emp to hr;授權成功。SQL> revoke select on emp from hr;撤銷成功。針對于某個列:SQL> grant update(sal) on emp to hr;SQL> revoke update on emp from hr;撤銷成功。 4.3 查看對象權限: SQL> se SQL> col OWNER for a6 SQL> col TABLE_NAME for a15 SQL> col GRANTOR for a7 SQL> col PRIVILEGE for a20SQL> show userUSER 為 "SCOTT"SQL> select grantee,owner,table_name,privilege from user_tab_privs;GRANTEE OWNER TABLE_NAME PRIVILEGE -------- ------ --------------- -------------------- HR SCOTT EMP FLASHBACK HR SCOTT EMP DEBUG HR SCOTT EMP QUERY REWRITE HR SCOTT EMP ON COMMIT REFRESH HR SCOTT EMP REFERENCES HR SCOTT EMP INSERT HR SCOTT EMP INDEX HR SCOTT EMP DELETE HR SCOTT EMP ALTER9 rows selected. GRANTEE:接受權限的用戶GRANTOR:授出權限的用戶 4.4 對象權限的轉授 SQL> show user USER 為 "HR"SQL> revoke update on employees from scott;撤銷成功。SQL> grant update on employees to scott with grant option;授權成功。SQL> show user USER 為 "SCOTT"SQL> grant update on hr.employees to oe;授權成功。SQL> show user USER 為 "SCOTT"SQL> update hr.employees set salary=salary+100;已更新107行。SQL> roll 回退已完成。 SQL> conn oe/oe 已連接。 SQL> update hr.employees set salary=salary+100;已更新107行。SQL> rollback;回退已完成。

    4.5 對象權限的級聯回收

    conn hr/hrgrant update on employees to scott with grant option;conn scott/tigergrant update on hr.employees to oe;SQL> update hr.employees set salary=salary+100;已更新107行。SQL> rollconn oe/oeSQL> update hr.employees set salary=salary+100;已更新107行。SQL> rollconn hr/hrrevoke update on employees from scott;conn scott/tigerSQL> update hr.employees set salary=salary+100; update hr.employees set salary=salary+100*1 行出現錯誤: ORA-01031: 權限不足conn oe/oeSQL> update hr.employees set salary=salary+100;--對象權限會被級聯回收 update hr.employees set salary=salary+100*1 行出現錯誤: ORA-01031: 權限不足
  • 角色
    5.1 角色:角色是一組權限(包含對象權限和系統權限)的集合
    5.2 角色作用:

    比較容易的權限管理

    動態的權限管理

    選擇權限的可獲得性

    可通過操作系統授予
    5.3. 創建角色并給它授權

    SQL> conn /as sysdba 已連接。 SQL> create role r1;角色已創建。SQL> grant select any table to r1;授權成功。SQL> grant update on scott.emp to r1;授權成功。

    查看角色中有哪些系統權限:

    SQL> select PRIVILEGE from role_sys_privs where role='R1';PRIVILEGE -------------------- SELECT ANY TABLE

    查看角色中的對象權限:

    SQL> select OWNER,TABLE_NAME,PRIVILEGE from role_tab_privs where role='R1';OWNER TABLE_NAME PRIVILEGE ------ --------------- -------------------- SCOTT EMP UPDATE

    5.4 角色授予與回收

    SQL> grant r1 to hr;--hr擁有角色r1中所有的權限授權成功。SQL> conn hr/hr 已連接。 SQL> select count(*) from oe.customers;COUNT(*) ----------319SQL> update scott.emp set sal=sal+100;已更新14行。SQL> roll 回退已完成。SQL> conn /as sysdba 已連接。 SQL> revoke r1 from hr;--r1中所有的權限都從hr中回收撤銷成功。SQL> conn hr/hr 已連接。 SQL> select count(*) from oe.customers; select count(*) from oe.customers*1 行出現錯誤: ORA-00942: 表或視圖不存在SQL> update scott.emp set sal=sal+100; update scott.emp set sal=sal+100*1 行出現錯誤: ORA-00942: 表或視圖不存在

    5.5 查看當前用戶有哪些角色

    SQL> select GRANTED_ROLE from user_role_privs;GRANTED_ROLE ------------------------------ CONNECT PLUSTRACE RESOURCE

    角色中的權限,在user_sys_privsH和user_tab_privs中看不到的

    SQL> select GRANTED_ROLE from user_role_privs;GRANTED_ROLE ------------------------------ CONNECT PLUSTRACE RESOURCESQL> conn /as sysdba 已連接。SQL> select privilege from role_sys_privs where role='CONNECT';PRIVILEGE -------------------- CREATE SESSIONSQL> select PRIVILEGE from user_sys_privs;PRIVILEGE -------------------- CREATE SYNONYM CREATE VIEW UNLIMITED TABLESPACECREATE SESSION這個系統權限在user_sys_privs中看不到

    ?

  • ?

    轉載于:https://www.cnblogs.com/yaoweber/p/3932977.html

    總結

    以上是生活随笔為你收集整理的控制用户的访问之权限、角色【weber出品必属精品】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。